問題タブ [recursive-mutex]
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.
windows - Windowsでの再帰的ミューテックス?
私が理解している限り、WindowsではCRITICAL_SECTIONは非再帰的ミューテックスとしてのみ使用できます。再帰的ミューテックスを取得するには、OpenMutexとその仲間を使用する必要があります。
ただし、AFAIU、Win32 Mutexは条件変数(InitializeConditionVariable et al。)では使用できません。
Windowsで条件変数と組み合わせて再帰ミューテックスを使用する方法はありますか?
c++ - 再帰的なQMutexの使用方法
再帰的なQMutexを使用しようとしています。QMutexクラスリファレンスを読みましたが、その方法がわかりません。誰かに例を教えてもらえますか?lockメソッドが呼び出された後または前にロックを解除できるQMutexをロックする方法が必要です。再帰的ミューテックスが方法ではない場合、他の方法はありますか?
c++ - std::recursive_mutex と std::condition_variable を組み合わせることはできますか?
std::recursive_mutex
と組み合わせることができますか?std::condition_variable
つまり、次のようなことを行います:
許可されていないのなら、なぜですか?
VC++11 を使用しています。
c++ - クラスメンバーとしての std::mutex と std::recursive_mutex の比較
私は何人かの人々が嫌いなのを見てきましたrecursive_mutex
:
http://www.zaval.org/resources/library/butenhof1.html
しかし、スレッド セーフ (mutex 保護) であるクラスを実装する方法を考えると、mutex で保護する必要があるすべてのメソッドが mutex で保護され、mutex が最大 1 回ロックされることを証明するのは非常に難しいように思えます。
したがって、オブジェクト指向設計では、(1 つのリソースのみを保護するために) 1 か所でのみ使用されない限り、std::recursive_mutex
デフォルトであり、一般的なケースでパフォーマンスの最適化と見なされる必要がありますか?std::mutex
明確にするために、1 つの非静的ミューテックスについて話しています。したがって、各クラス インスタンスにはミューテックスが 1 つしかありません。
各パブリック メソッドの開始時:
multithreading - 再帰的 (再入可能) ミューテックスはどのように機能しますか?
http://preshing.com/20120305/implementing-a-recursive-mutexとhttp://en.wikipedia.org/wiki/Reentrant_mutexで再帰的 (再入可能) ミューテックスに関する 2 つの記事を読みましたが、どちらの記事も何もしませんでした。検出。
誰かが再帰的(再入可能)ミューテックスがどのように機能するかを説明できますか?
(再帰ミューテックスがどのように機能するかを説明する資料はほとんど見つかりませんでした。誰かが適切な説明とリンクしている場合は、この質問を閉じます。)
ありがとう !
c++ - 再帰的ミューテックス ロックの背後にあるアイデア
私は学校の研究室で働いており、カウント プログラム用の再帰的ミューテックス ロックを作成するように指示されています。私はいくつかのコードを書きましたが (これは動作しません)、再帰的ミューテックス ロックを使用する背後にある本当のアイデアを理解していないことが主な原因だと思います。再帰的なミューテックスロックが何をすべきか/どのように見えるべきかを誰か詳しく説明できますか?
一般的な注意: 私は答えを求めているのではなく、再帰的相互排他ロックが何をすべきかについての説明を求めているだけです。
また、誰かが興味を持っている場合は、これに必要なコードを次に示します。私が編集/実装しているコードは recmutex.c です。
remutex.h
recmutex.c: 再帰的ミューテックスの関数が含まれています
count_recursive.cc: 上記のカウント プログラム。recmutex 関数を使用します。
c - エラーチェックミューテックスと再帰ミューテックス
ミューテックスを使用して自分で再帰的なミューテックス型を作成できるかどうか疑問に思っていましたがPTHREAD_MUTEX_ERRORCHECK
、これが結果です。
PTHREAD_MUTEX_RECURSIVE
このタイプの再帰的ミューテックスは、次の属性を持つミューテックスよりもはるかに高速であることがわかりました。
テストコード (それぞれ 1000000 回呼び出されます):
pthread_recursivemutex_t
pthread_mutex_t
?!のほぼ 2 倍の速さです。しかし、どちらも同じように振る舞う...?
上記の解決策は安全ですか?
c - 私の再帰ミューテックスと pthread_mutex_t (タイプ: 再帰) (再投稿、プッシュ)
ミューテックスを使用して自分で再帰的なミューテックス型を作成できるかどうか疑問に思っていましたがPTHREAD_MUTEX_ERRORCHECK
、これが結果です。
PTHREAD_MUTEX_RECURSIVE
このタイプの再帰的ミューテックスは、次の属性を持つミューテックスよりもはるかに高速であることがわかりました。
テストコード (それぞれ 1000000 回呼び出されます):
pthread_recursivemutex_t
pthread_mutex_t
?!のほぼ 2 倍の速さです。しかし、どちらも同じように振る舞う...?
ところで:
与える
m: 0 11
m: 11
UNLOCKED!!: 0
m2: 11
これは、スレッド 2 がロックされている間はミューテックスを取得する機会がないことを意味します。