threading=multi
ブーストを構築するときにフラグが正確に何をするのか完全にはわかりません。ドキュメントには次のように記載されています。
Causes the produced binaries to be thread-safe. This requires proper
support in the source code itself.
これはあまり具体的ではないようです。これは、たとえばブースト コンテナーへのアクセスが保護されていることを意味しますmutexes/locks
か? 私のコードのパフォーマンスは重要であるため、不要なミューテックスなどを最小限に抑えたい.
詳細:
私のコードは、マルチスレッドのサードパーティ アプリケーションに読み込まれるプラグイン DLL です。Boost を DLL に静的にリンクします (プラグインは、標準の Windows DLL 以外の依存関係を持つことが許可されていないため、これを行う必要があります)。
アプリケーションはマルチスレッドですが、DLL 内のほとんどの関数は単一のスレッドからしか呼び出されないため、コンテナーへのアクセスを保護する必要はありません。複数のスレッドから呼び出すことができるコードの残りの場所は、boost::mutex
and friends を使用して明示的に保護します。
私は両方threading=multi
と両方でブーストを構築しようとしましthreading=single
たが、両方ともうまくいくようですが、ここで何をしているのか本当に知りたいです。