2012-06-11 4 views
2

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

Если вы связаны с процессором, вы уже облагаете налогом процессор, верно? Почему тогда было бы целесообразно добавить дополнительную работу ЦП? Является ли идея, что вы должны попытаться сопоставить количество связанных с CPU потоков с ядрами?

Что касается корпуса одноядерной машины. Имеет ли смысл многопоточность операции с привязкой к процессору?

Заранее спасибо.

+1

Многопоточная процедура, связанная с процессором, имеет почти такой же смысл, какой она может сделать. – Mysticial

ответ

9

Если вы связаны с процессором, вы уже облагаете налогом процессор, верно? Почему тогда было бы целесообразно добавить дополнительную работу ЦП? Является ли идея, что вы должны попытаться сопоставить количество связанных с CPU потоков с ядрами?

Да, это в основном идея. Если алгоритм связан с ЦП, он свяжет одно ядро ​​обработки. Если в вашей системе 4, использование всех 4 может значительно повысить общую пропускную способность. Без нескольких потоков вы будете использовать только одно ядро ​​для обработки ваших данных.

Что касается корпуса одноядерной машины. Имеет ли смысл многопоточность операции с привязкой к процессору?

Он может, но обычно, только если это не чисто CPU bound. Если ваша подпрограмма полностью привязана к процессору, вам обычно требуется не более 1 потока на ядро. Если, однако, некоторые части вашего алгоритма имеют другие характеристики и связаны другими вещами, эта часть может иногда извлекает выгоду из наличия обычной рутины.

+0

Спасибо за отличный ответ. – jglouie

Смежные вопросы