問題タブ [scoped-lock]
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++ - scoped_lock を使用して、相互排除でキューから packaged_task を抽出した後に実行する
scoped_lock を使用して 2 つのミューテックスをロックした後、キューから抽出されたタスクを実行する必要があります。問題は、タスクをキューから別のタスクにスワップしてから実行することです。これまでのところ、これが私の出発点です
しかし、タスクを変数に保存して後で実行することはできません。
c++ - scoped_lock のデストラクタを理解するには? cppreference は間違っていますか?
どうやって理解する[](auto&... __m) { (__m.unlock(), ...);
?インラムダを理解していませ...
ん。また、これがミューテックスを逆の順序で解放する方法もわかりません。
@HolyBlackCat が言うように、
(__m.unlock(), ...)
を意味(__m1.unlock(),(__m2.unlock(), (__m3.unlock(), (...))))
しますが、逆の順序でのロック解除は実装しません。
cppreference.com で:
scoped_lock オブジェクトが作成されたスコープから制御が離れると、scoped_lock は破棄され、ミューテックスは逆の順序で解放されます。
これを確認するために、次のような実験を行います。
では、cppreference は間違いを犯しますか?