glibには と呼ばれるデータ構造がありGAsyncQueue
、セマフォ/ロックなどを使用せずにスレッド間通信を可能にし、生産者/消費者ソリューションを実装するタスクを簡単にします。2 つの異なるスレッドがデータをGAsyncQueue
構造体にプッシュする場合、push
関数はキューへの相互排他的アクセスを内部的に実装します。さらに驚くべきことに、スレッドがpop
関数を呼び出し、そこにデータがない場合、呼び出し元のスレッドは、他のスレッドによってデータがキューにプッシュされるまでブロックされます。これらはすべてスレッドセーフな方法で、開発者に対して透過的に行われます。
ただし、このライブラリは C 用に作成されたものであり、高水準言語用のより良い代替手段があるかもしれません。とにかくglibを使おうと思っているのですが、C++コードでCライブラリを使うのは違和感があります...
質問は、glib に相当する C++ 推奨のものはありますか? より具体的には、と同じ機能を提供する、より推奨される C++ ライブラリはありますGAsyncQueue
か?