Вопрос

Я пишу приложение Merb, которое использует для хранения комбинацию SimpleDB и Tokyo Tyrant.Для обоих этих хранилищ данных я реализую В (список) функциональность типа путем запуска потока для каждого значения в список а затем объединить наборы результатов.Учитывая, что это веб-приложение, существует ли ограничение на количество потоков, которые мне следует создавать?Ruby 1.8.7, поэтому они не являются потоками ядра.

Это было полезно?

Решение

Потоки кажутся плохим подходом к тому, что вы пытаетесь сделать здесь, и если вы не можете использовать JRuby, я бы вообще отказался от потоков.Однако вы можете создать файл Ruby, загружающий базу данных, и использовать библиотека тестов чтобы провести сравнительный анализ того, какое число является самым быстрым.Вероятно, вы также захотите посмотреть на используемую память.

Другие советы

На мой взгляд, ваша проблема связана с вводом-выводом, поэтому может помочь многопоточность одного ядра.

Большую часть времени в вашем основном цикле Ruby вы, вероятно, будете ожидать токийского тирана и простой БД, которые выполняются в отдельном многопоточном процессе.

Так сколько нитей?Кто знает?Вам придется ориентир и мера.

Если вы используете МРТ, то использование потоков в таких случаях не принесет большой помощи, поскольку в МРТ используются зеленые нити, которые бесполезны при вычислительных операциях.Я считаю, что тогда будет полезно использовать JRuby (собственные потоки).Я постоянно слышу, что для собственных потоков лучше использовать (количество ядер + 1), чтобы использовать доступные ядра.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top