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
//...