一般に、アプリケーションでスレッド同期を使用することはあまりありませんでした。この機能はあまり必要としなかったからです。私は C/C++ の上級プログラマではありませんが、初心者でもありません。CPU のパワーと比較して、最近の GPU のパワーに興奮して CUDA C を学び始めました。そして、CUDA プログラミングは主に並列スレッド実行に関するものであり、時には適切なスレッド同期が必要であることに気づきました。実際、C や C++ でスレッド同期を適用する方法もまだ知りません。最後に同期を使用したのは約 2 年前で、Java で次のような単純なアプリを作成していました。
synchronized returnType functionName(parameters)
{
...
}
'functionName' を一度に 1 つのスレッドだけで実行できるようにするもの - つまり、この関数は異なるスレッドによって交互に実行されます。CUDA C に戻ります。たとえば、ブロック内に while ループ内でコードを実行する 200 のスレッドがあるとします。
while(some_condition)
{
...
}
スレッド <0 - 99> を互いに同期させ、スレッド <100 - 199> も互いに同期させるにはどうすればよいでしょうか。最初の 100 スレッドが「while」の内容を実行し、その後、次の 100 スレッドが「while」の内容を実行するなど)?