1

マルチスレッドを使用する場合、使用するブースト クラスが再入可能であることを確認する必要があります (各スレッドが独自のオブジェクト インスタンスを使用する場合でも)。

Boost のクラスのドキュメントで、クラスの再入可能性に関する記述を見つけるのに苦労しています。ここで何か不足していますか?ドキュメントで特に明記されていない限り、Boost のすべてのクラスは再入可能ですか? それとも、再入可能性に関する Boost のドキュメントは灰色の領域ですか?

たとえば、ドキュメントのどこにも、boost::numeric::ublas∷matrix クラスの再入可能性に関する記述が見つかりませんでした。それで、再入可能かどうかを推測できますか?

ありがとう!

オファー

4

1 に答える 1

1

Boost のほとんどは、次の点で STL および C++ 標準ライブラリのほとんどに似ています。

  • 2 つのスレッドでタイプの 2 つのインスタンスを同時に作成しても問題ありません。
  • 2 つのスレッドで同じ型の 2 つのインスタンスを同時に使用しても問題ありません。
  • 2 つのスレッドで同時に 1 つのオブジェクトを使用することは、多くの場合、問題があります。
  • しかし、2 つのスレッドで 1 つのオブジェクトに対して読み取り専用操作を実行することは、多くの場合問題ありません。
  • shared_ptr、Asio、Signals2 (ただし Signals ではない) など、特別な必要がある場合を除いて、通常、スレッドの安全性を "強化" するための特別な努力は行われません。値型のように見える Boost の部分 (行列の例など) には、おそらく特別なスレッド セーフ サポートがまったくないため、アプリケーションに任せます。
于 2012-01-21T16:34:57.707 に答える