Ограничение макс. потоки, которые можно создать в многопоточности

У меня есть несколько потоков, вызываемых, скажем, несколькими другими процессами одновременно. Обычно эмпирическое правило для макс. количество потоков, которые процессор может запустить, давая эффективность производительности, равно нулю. потоков = нет. процессоров + 1 (хотя не уверен). Все современные приложения поддерживают пул потоков и продолжают повторно использовать потоки в любом конкретном случае.

Как мы можем убедиться, что производительность не ухудшится из-за этого. Потому что, когда он выходит за пределы, потоки продолжают переключать контекст, и в любой момент ни один из них не будет выполнять критическую часть кода.


person A_Var    schedule 23.12.2010    source источник


Ответы (1)


Количество потоков больше зависит от используемых ресурсов. Если поток обрабатывает данные с диска или из сети, это зависит от того, как долго он должен ждать на этих ресурсах. Во время ожидания другой поток может выполнить некоторую работу. Для чистого числа я бы сказал, один поток на процессор/ядро.

person MarcelDevG    schedule 23.12.2010