2

接続の確立、threir の削除、シグナルの送信などがスレッドセーフであることを期待して、シグナル/スロット フレームワークとして xlobjects から boost::signals2 に切り替えています。スレッド間シグナルの発行にはまったく興味がありません。

したがって、簡単な質問は次のとおりです。たとえば、2 つ以上のスレッドが同じシグナルで接続できるように、boost::signals2 はスレッドセーフですか?

また、boost::signals2 は xlobjects と比較してパフォーマンスが低下しますか? アプリケーションはシグナル/スロットに大きく依存していないため、これは重要ではありませんが、それでも知りたいです。

4

2 に答える 2

3

ブースト信号 2 はスレッドセーフです。

ただし、何らかの理由で追加のパフォーマンスが必要で、単一スレッド アクセスを保証できる場合は、signals2 ライブラリにダミーのミューテックスがあり、実際のミューテックスよりもはるかに高速です。

于 2015-05-15T04:49:17.790 に答える
2

boost.signal のスレッド セーフに関して必要なすべての回答はドキュメントにあると思います(簡単な回答: はい、boost:signals2 はスレッド セーフです)。パフォーマンスに関しては、スレッドセーフには代償が伴うと思いますが、確認する方法は 1 つだけです: ベンチマーク !

于 2010-11-18T09:45:44.620 に答える