問題タブ [readwritelock]
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++ - Windows の AcquireSRWLockExclusive は再帰的ですか?
読み書きロックを使用する必要がありますが、ロックが読み取りモードと書き込みモードの両方で再帰的であることを確認したいので、同じスレッドでそれを使用する呼び出し関数はロックされません。
MSDN ドキュメントには何も見つかりませんでした。どこかに隠れていて、見つけられなかったのでしょうか?
winapi - SRW Lock をバイナリ セマフォとして使用できますか?
Slim Reader/Writer (SRW) Locksは Windows の同期プリミティブであり、Windows Vista 以降で使用できます。
名前とインターフェイスは、時間制限のない共有非再帰ミューテックスとして使用する必要があることを示唆しています。CRTICAL_SECTION
ただし、 (排他的 API のみを使用して) オーバーヘッドを回避するために、非共有ミューテックスとしても使用するのが一般的です。
バイナリセマフォとしても機能することに気付きました。Windows API で使用可能な他のセマフォ (イベント オブジェクトとセマフォ オブジェクト) は常にカーネル呼び出しであるため、これは便利です。おそらく Windows API からすぐに使用できる唯一の軽量セマフォです (C++ には C++20 から始まるセマフォがあり、ブースト スレッドもセマフォを提供しません)。
しかし、これは信頼できますか?具体的には、この方法で使用できるという明示的な情報がドキュメントに見つかりませんでした。
しかし、この使用法を禁止するものは見つかりませんでした。ドキュメントは不確かなようです。
私が答えとして期待していること:
- セマフォの使用を許可または禁止する文書の文言を教えてくれる人がいるかもしれません
- たぶん、そのような使用法にはいくつかの実践的な経験があります
- おそらく、SRW ロックの実装に直接関与する誰かが明確にすることができます (可能性はあると思います)。
例 - これはハングしません