2010-03-08 3 views
0

Я нахожусь в своем проекте на компиляторе с SMP и хочу кодировать pthreads и слышал о многих параллельных вещах, открытых mpi и т. Д. Итак, чтобы начать с того, как этот поток выделяется ядру при вызове pthread, есть ли способ давать потоки различным ядрам pthreads?Как работает этот pthread?

ответ

1

Ознакомьтесь с учебником pthreads, например this. Но в целом я бы рекомендовал использовать библиотеку более высокого уровня, чем pthreads, так как будет проще или систематически использовать их. Например, Boost :: Threads или Intel TBB.

0

Система назначит потоки доступным ядрам и перемещает их, если в других местах есть свободные ресурсы.

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

0

Самый простой ответ: да - в общем случае разные потоки, скорее всего, будут работать на разных ядрах, автоматически без необходимости указывать, где работают потоки.

Похоже, вам нужно введение/праймер в многопоточном программировании вообще, прежде чем погрузиться в конкретную библиотеку потоков/способ мышления. Прежде чем делать что-либо еще, прочитайте раздел «What is a thread» от Amit выше, а затем посмотрите на особенности потоков POSIX, потоки Windows, TBB, Boost Threads или любую другую библиотеку/оболочку, которые вам интересны.

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