В основном мне нужно, чтобы главный поток продолжал выполнять некоторую операцию на основе значения некоторых глобальных переменных, которые могут быть отредактированы (через некоторые выбранные интервалы) вторичным потоком. Что-то типа:
vector<int> mySharedVar;
void secondaryThreadFunction() {
Do some operations
And update mySharedVar if necessarily
}
int main() {
int count = 0;
while(true) {
count++;
if (count%100) { //> Each 100 iterations run a parallel thraed
//> RUN secondaryThreadFunction in a separateThread
}
this is the main thread that based its operation on mySharedVar
}
}
Какая команда openmp запускает один параллельный поток с secondaryThreadFunction();
?
Есть ли другой лучший способ, чем этот:
#pragma omp parallel num_threads(2)
{
int i = omp_get_thread_num();
if (i == 0){
mainThread();
}
if (i == 1 || omp_get_num_threads() != 2){
secondaryThreadFunction();
}
}
Thread.run();
? Мне просто нужно 2 очень простых потока, работающих вечно, где второй поток обновляет некоторые глобальные переменные один раз в 200 мс (или когда главные потоки отправляют ему сигнал) - person dynamic   schedule 18.07.2012