Как на самом деле работает этот pthread? - PullRequest
0 голосов
/ 08 марта 2010

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

Ответы [ 3 ]

1 голос
/ 08 марта 2010

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

0 голосов
/ 09 марта 2010

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

Кажется, что вам нужно введение / учебник по многопоточному программированию в целом, прежде чем углубляться в конкретную библиотеку потоков / образ мышления. Прежде чем делать что-либо еще, прочитайте раздел " Что такое поток " из Amit выше, а затем начните изучать либо специфику потоков POSIX, потоков Windows, TBB, Boost Threads, либо любой другой вид библиотеки / оболочки тебе интересно.

0 голосов
/ 08 марта 2010

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

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

...