Haskell как очень параллельный сервер

Скажем, я хочу записать сервер в Haskell. Вид, который имеет высокий параллелизм и простую обработку. Вид, который был бы устойчив к отказам и предложил бы высокую доступность. Вид, для которого Erlang был бы хорош.

С чего был бы хороший набор инструментов, ли платформа или ряд примитивов, для запуска?

12
задан Don Stewart 20 April 2011 в 04:53
поделиться

2 ответа

Excel имеет функцию Текст в столбцы в меню Данные , которая позволяет указать пользовательский разделитель. Я предполагаю, что номера будут иметь аналогичную функциональность. Если да, то решение состоит в копировании и вставке непосредственно в документ Numbers, а затем преобразовании этих текстовых ячеек в столбцы, указывающие | в качестве разделителя.

-121--2402951-

Используйте мастер для приложения на панели табуляции и установите его в нормальное состояние. На любой вкладке, на которой требуется добавить контроллер навигации, создайте его в XIB с помощью библиотеки. Мой XIB имеет:

- File's Owner          DescriptiveNameNavViewController
- First Responder
- View                  UIVIew
- Navigation Controller UINavigationController
  - Navigation Bar      UINavigationBar

Обратите внимание, что в представлении нет ничего. Сведения о том, где UINavigationController подключается к UIView, см. в разделе viewDidLoad ниже.

В файле заголовка для ViewController Tab (который я здесь назвал DescriptiveNameNavViewController - для этого нет конкретного стандарта, но я использую [что-то] NavViewController, чтобы напомнить мне, что этот ViewController содержит навигационный контроллер со стеком навигации. Это имя контроллера, установленное в файле MainWindow.xib, который генерирует мастер) Набор UINavigationController * IBOutlet, к которому подключен контроллер навигации в XIB:

@interface DescriptiveNameNavViewController : UIViewController {
    UINavigationController *navigationController;
}
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

@end

В контроллере дескриптора NameNavViewController выполните следующее:

- (void)viewDidLoad {
    [super viewDidLoad];
    [[self view] addSubview:[navigationController view]];
    DescriptiveNameController *aController = [[[DescriptiveNameController alloc ] initWithNibName:@"DescriptiveNameController" bundle:nil ] autorelease];
    aController.title = @"Descriptive Title";

//
//  app stuff goes here.
//

    [self.navigationController pushViewController:aController animated:YES];
    [self.navigationController setDelegate:self];
}

Настройка делегата в DescriptiveNameNavViewController является сверхважной, так как в противном случае вы не получите методы, которые ожидаются в экземплярах DescriptiveNameViewController, и все остальное, что вы вставляете в стек навигационного контроллера.

В DescriptiveNameNavViewController реализуйте методы UINavigationControleyDelegate так:

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ([viewController respondsToSelector:@selector(viewDidAppear:)]) {
        [viewController viewDidAppear:animated];
    }
}

И это вызовет распространение сообщений на контроллеры внутри UINavigationController, как и ожидалось. Кажется, что многие проблемы, с которыми сталкиваются люди, связаны с тем, что viewDidAppean: или другие методы не вызываются на ViewControllers, вставляемых в NavigationController.

В любом случае, дайте мне знать, если больше деталей поможет.

-121--3842453-

Именно в этом и состоит Хаскелл. Она обладает отличной поддержкой многоядерного параллелизма, поэтому при использовании большего количества потоков можно легко воспользоваться преимуществами дополнительных ядер. Однако помните, что Haskell стремится к высокой производительности на многоядерных процессорах, Erlang немного отличается, делая акцент на распределенных системах больше, а не столько на необработанной производительности (например, см. игру бенчмарков, http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=ghc&lang2=hipe Haskell почти всегда намного быстрее и использует гораздо меньше памяти).

Теперь, чтобы начать:

Вы должны найти эту задачу относительно легко и весело!

19
ответ дан 2 December 2019 в 18:18
поделиться

Отличное место для начала - фундаментальная работа Саймона Пейтона Джонса The Awkward Squad.

... Недавно я услышал доклад, который может показаться вам интересным. Подробности на сайте galois

1
ответ дан 2 December 2019 в 18:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: