Передача сообщений с участием актеров великолепна. Но я хотел бы иметь еще более простой код.Есть ли реализация быстрого параллельного синтаксического сахара в scala? например. map-reduce
Примеры (Псевдо-код)
val splicedList:List[List[Int]]=biglist.partition(100)
val sum:Int=ActorPool.numberOfActors(5).getAllResults(splicedList,foldLeft(_+_))
где spliceIntoParts получается один большой список в 100 небольших списки numberofactors части, создает пул, который использует 5 актеров и получает новые рабочие места после того, как работа закончена и getallresults использует метод в списке. все это делается с передачей сообщений в фоновом режиме. где возможно getFirstResult, вычисляет первый результат и останавливает все остальные потоки (например, взламывает пароль)
Да, я вижу 'getAllResults', но как насчет' getFirstResultandThrowAwayEverythingElseFunction'? Вместо использования 'all' нам понадобится' any' – TiansHUo
Это больше работает прямо сейчас - и не очень эффективно на любом языке, заметьте - и будет включать замену 'future' на' actor {loop {react {/ * код корпуса * /}}}! сообщение ", а затем получение первого ответа и игнорирование остальных. Во всяком случае, дело в том, что вы можете, конечно, создать его из актеров (даже с автоматическим выводом, если вы используете ссылку), но он не существует из коробки. Улучшенный параллелизм является одним из основных фокусов 2.9. –
2.9? И когда это? Или я должен спросить, когда Scala готова для основного производства? (Да, есть твиттер, но есть только твиттер) – TiansHUo