問題タブ [stdmutex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::mutex による解放と取得
これは C++ 標準に関する質問です。私はドラフト標準にしかアクセスできないため、これが公式のものと異なる場合はお詫びします. また、これがどのように機能するかを誤解している場合は、お気軽に修正してください。
1 つは文字列への書き込み、もう 1 つはその文字列の内容のコピーを作成する 2 つのスレッドがあるとします。一般に、ロックには RAII クラスを使用する必要があるstd::mutex myMutex;
ことはわかっています。例をより明確にするために、lock と unlock を明示的に使用しました。
私の理解では、これがスレッド間で確実に機能するためには、スレッド 1が文字列を設定した後にリリース操作を実行し、スレッド 2が文字列を読み取る前に取得を実行する必要があります。
C++11 のドラフト標準を読んでも、これを行うと述べているものは何も見えませんがstd::mutex
、それが期待されていること、またはミューテックスが何の役にも立たないことは明らかです。
誰かが私に関連セクションを見てもらうことができますか? 標準の文言は、カジュアルな読者にはしばしば明確ではありません:)
c++ - std::unique_lockまたは std::lock_guard?
2 つの使用例があります。
A. 2 つのスレッドのキューへのアクセスを同期させたい。
B. 2 つのスレッドのキューへのアクセスを同期し、条件変数を使用したい。スレッドの 1 つが、コンテンツが他のスレッドによってキューに格納されるのを待つためです。
AI の使用例については、 を使用したコード例を参照してくださいstd::lock_guard<>
。BI の使用例については、 を使用したコード例を参照してくださいstd::unique_lock<>
。
2 つの違いは何ですか?どのユースケースでどちらを使用する必要がありますか?
c++11 - クラスのメンバー変数として std::mutex を使用する
std::mutex my_mutex
プライベート メンバ変数を持つクラスを定義しました。lock_guard
しかし、別のスレッドから呼び出されるメンバー関数で使用しようとすると、コンパイラは多くのエラーをスローします。このミューテックスをクラス外に保持すると、機能します。コードは次のとおりです。
同じmy_mutex
ことがクラス外に保持されている場合は、正常に機能します。では、同じ変数がクラス内にあり、スレッドによって実行されるメンバー関数内で呼び出された場合、それは静的メンバーのように扱われるのでしょうか?