私は2つのグループのスレッドを持っています.1つのグループはn個のスレッドで実行され、もう1つのグループはm個のスレッドによって実行されます。私は、そのグループは、最初の1つの開始、同時にそれらを開始したいが、私が取得することで、グループ2異なるスレッド機能を持つ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
...
しかない場合には、あなたが何をするのかを指定できるようにするいくつかのコンストラクトがありました。それは同時にそれらをすべて行いました。何らかの並列ループを使用することができました。 –
これは、あなたのOSが使用しているスケジューラのタイムスライスや、複数のコアとたくさんのものを使用している場合、おそらく処理したくないものに大きく依存することになります。なぜあなたはそれをしたいのですか? –