LINUX.ORG.RU

active threads vs. thread pool


0

0

Что лучше с точки зрения производительности на SMP (память в расчет не берём) из двух вариантов:

1) есть N тредов (может достигать 1000 в пике), из которых N/2 тредов большее время блокируются в ожидании задачи (каждый тред имеет свою очередь, так как логика довольна сложна и не хотелось бы изобретать каждый раз FSM при добавлении новых фич).

2) есть пул (maхsize=N) из М тредов (может достигать 1000 в пике), из которых N/2 тредов большее время ожидают задачи. Здесь придется изобретать FSM.

Есть ли разница между 2-мя вариантами в производительности? Как обстоит дело с переключением контекста в сравнении п.1 и п.2?

anonymous

я конечно не программист, но вот на примере jvm, когда оно само распределяет нагрузку между процессорами (т.е. jvm одна, но треды выполняются на разных процессорах), все что можно было получить за счет многопроцессорности тупо уходит в сисколы и в итоге работает медленнее чем на одном процессоре, может такая проблема не актуальна на чисто вычислительных задачах, но на классической трехзвенке проблема именно такая.

borisych ★★★★★
()

Гугл сказал что FSM это Flying Spaghetti Monster
Он прав ?

А каким именно способом в первом варианте блокируються треды ?

anonymous
()
Ответ на: комментарий от anonymous

Finite State Machine aka KA

> А каким именно способом в первом варианте блокируються треды ? dequeue()

anonymous
()

скорее всего тебе нужен пул процессов. эта штука проще паралелится и реже инвалидирует кеши ядер.

cvv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.