我有兩組線程,一組由n個線程執行,另一組由m個線程執行。我想在同一時間啓動它們,但我得到的是,該組第1分開始,然後組2如何在同一時間啓動具有不同線程功能的兩個線程組?
//group 1
#pragma omp parallel num_threads(n)
{
#pragma omp for
for (int i = 0; i < n; i++) {
function1(i);
}
}
//group 2
#pragma omp parallel num_threads(m)
{
#pragma omp for
for (int i = 0; i < m; i++) {
function2(i);
}
}
我得到的輸出是:
function1 is called
function1 is called
function1 is called
...
n
function2 is called
...
m
我期望的輸出(只是隨便舉個例子):
function2 is called
function2 is called
function1 is called
function2 is called
function1 is called
...
只要有是一些讓你指定許多事情的結構,並且它們在同一時間完成了它們,你可以使用某種並行循環。 –
這將嚴重依賴於您的操作系統正在使用的調度程序的時間片等事情,以及您是否正在使用多個內核以及許多您可能不想處理的內容。你應該問這個問題,你爲什麼要這樣做? –