Clojure много потоков - PullRequest
9 голосов
/ 14 июня 2010

Я только что закончил смотреть выступление Рика Хики "Clojure Concurrency", и у меня есть несколько вопросов о темах.

Скажем, у меня ситуация со многими агентами, скажем, 10000 из них работают на одной машине. Я бы предпочел не запускать 10 000 потоков ЦП одновременно, но я не хочу, чтобы потоки блокировались действиями других потоков.

В этом примере я не буду ждать ответов, вместо этого каждый агент будет отправлять одно или два сообщения, а затем ждать, пока не получит сообщение.

Как бы я структурировал подобную программу, не получая потоков из 10 тыс. ОС, которые, вероятно, в конечном итоге замедлили бы работу системы.

1 Ответ

2 голосов
/ 14 июня 2010

Имейте в виду, что Clojure работает поверх JVM.Таким образом, у вас может быть 10 000 потоков Java, но это не равно 10 000 процессов ОС.Я подозреваю, что сборщик мусора может оказаться вашим узким местом, поэтому я бы сосредоточился на настройке следов каждого агента.(Само собой разумеется, что вы должны проверить и проверить это перед настройкой.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...