|
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме: 432613
Репутация:
80
|
|
Внесу ясность
На самом деле потоки не умножают CPU, (по крайней мере на однопроцессорных машинах) суть в том система, чтобы равномерно обслуживать каждый поток (а в приложении(процессе) их может быть сколько угодно), выделяет кванты времени, чтобы дать выполнить пару машинных команд, ну или сколько успеет. Из за этого возникает иллюзия того, что все выполняться паралельно, хотя на самом деле системе потребуется столько же врмени для обработки одно и той же операции. Потоки лишь в некоторых случаях дают выигрыш, в частности потоки дают ощутимый результат, когда опрашивают порты, или устройства. Именно поэтому потоки дают не более 10%-15% прирост производительности, например при опросе узлов в интренете, связи с прокси серверами и т.д. И абослютно такой же код написанный в конструкции for, while, repeat, выполняется медленней, чем при использовании функций CreateThread, ExitThread, SetThreadContext, GetThreadContext, TerminateThread, и их обработчиков.
Последний раз редактировалось flacs; 22.05.2010 в 22:55..
|