Writer
データを生成するクラスとReader
、それを消費するクラスがあるとします。私はそれらを異なるスレッドで常に実行したいと考えています。OpenMPでそれを行うにはどうすればよいですか?
これは私がしたいことです:
class Reader
{
public:
void run();
};
class Writer
{
public:
void run();
};
int main()
{
Reader reader;
Writer writer;
reader.run(); // starts asynchronously
writer.run(); // starts asynchronously
wait_until_finished();
}
section
最初の答えは、各操作を に分けることを指していると思いますがsections
、コードブロックが異なるスレッドに与えられることを保証するものではありません。
できるtask
かな?読んだ後に理解した限りでtask
は、各コードブロックは一度だけ実行されますが、割り当てられたスレッドは変更される可能性があります。
他の解決策はありますか?
pthreads
複数のスレッドを明示的に作成するを使用する、継承したコードを OpenMP で記述できるかどうかを知りたいです。問題は、一部のスレッドが適切に作成されておらず、アクティブな待機ループが含まれていることです。そのような状況で、待機中のアクティブな 2 つのオブジェクトが同じ OpenMP スレッドに割り当てられる (したがって、順次実行される) と、デッドロックに達する可能性があります。少なくとも では起こりうると思いますがsections
、s についてはわかりませんtask
。