Темы в OpenMP C ++ - PullRequest
       11

Темы в OpenMP C ++

0 голосов
/ 07 января 2011

Мне нужно добиться эффекта потоков C # в C ++ OpenMP ..

Thread t=new Thread( func1 );
t.Start(); // Do something
// Do something else

Обратите внимание, что ни родитель, ни дочерний элемент не ждут присоединения ..

Можно ли это сделать вC ++ OpenMP ??

Спасибо,

1 Ответ

2 голосов
/ 07 января 2011

OpenMP - это библиотека потоков более высокого уровня, чем потоки C #, и она часто используется для почти автоматического добавления некоторых потоков в последовательные приложения. Вы можете достичь чего-то похожего на то, что хотите, используя директиву #pragma omp parallel, которая автоматически запускает код в блоке директивы в нескольких потоках. Затем вы можете вызвать функцию в этом параллельном разделе.

Сила OpenMP заключается в том, что добавить потоки в существующий код просто с помощью нескольких директив. Однако я обнаружил, что проще использовать библиотеку потоков более низкого уровня, если я хочу сделать что-то сложное (или просто в этом отношении).

Если вы хотите что-то похожее на потоки C #, взгляните на библиотеку Boost.Thread . При этом вы можете делать то, что вы хотите, почти в том же синтаксисе:

#include <boost/thread.hpp>

//creates the thread object and starts the thread, returns immediately
boost::thread th(func1);

//...
//do something else
//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...