しばらくの間、怒りの中でブースト共有メモリを学習して使用していたので、どのタイプのミューテックスをいつ使用するかのメンタルモデルにたどり着きました。それは次のようになります。
class IntendedToResideInProcessMemory {
boost::mutex mutex_for_this_process; // 1
boost::interprocess::interprocess_mutex
ok_but_pointless_to_use_interprocess_mutex_here; // 2
}
class IntendedToBeCreatedInSharedMemory {
boost::mutex bad_mutex_at_a_guess_this_will_allocate_something_on_heap;// 3
boost::interprocess::interprocess_mutex
good_for_multiprocess_shared_lock; // 4
}
原則としてこれが間違っていないことを願っていますので、間違っている場合は修正してください。私の意図は、この図に準拠していない既存のコードと自分自身のコードを前進させて修正することですが、確実にしたいと思います。
この質問には 2 つの部分があります。本当に問題ないと思いますが、//2 を使用するのは無意味です。コンテキストでは、これは //1 よりも良くありませんが、その理由は何ですか? パフォーマンス?
//3 については、私の推測は正しいですか? 機能しない理由、または少なくともどのような状況では機能しないのか、技術的な舞台裏の理由を誰かが説明できますか?