問題タブ [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.
swift - ロックを解放するのに時間がかかる Swift pthread 読み取り/書き込みロック
pthread API を使用して Swift で読み取り/書き込みロックを実装しようとしていますが、奇妙な問題に遭遇しました。
私の実装は主に以下に基づいており、試行された読み取りロックのタイムアウトが追加されています。
http://swiftweb.johnholdsworth.com/Deferred/html/ReadWriteLock.html
これが私の実装です:
これが私の単体テストです:
最後に、単体テストの出力は次のとおりです。
もちろん、書き込みロックが時間内に解放されないため、テストは失敗します。待機時間が 0.5 秒 (500 ミリ秒) しかないのに、書き込みロックの実行と解放に約 570 ミリ秒かかるのはなぜですか?
最適化をオンとオフの両方で実行しようとしましたが、役に立ちませんでした。
私は高解像度のスリープ タイマーであるという印象を受けました。ここでは、ロック タイムアウトのために少なくともnanosleep
5 ~ 10 ミリ秒の解像度が期待されます。
誰かがここで光を当てることができますか?
c++ - pthread 読み取り/書き込みロックは FIFO ですか?
ライブラリpthread.h
にはpthread_rwlock_t
FIFOがありますか?
次の例では、複数のスレッドがあります。すべてのスレッドが順番に実行されることが保証されていると想像してください。
スレッド 1 がロックを解放した後、誰がロックを取得しますか? スレッド 2 と 3 がそうすることが保証されていますか? それとも4に与えられるのでしょうか?
繰り返しますが、すべてのスレッドが順番に実行されることが保証されており、すべてのスレッドがロックを取得しようとするまでスレッド 1 がロックを解放しないとします。
java - ReadWriteLock 書き込みロックの飽和
ロックを取得せずに Writer スレッドが不足しているという問題があります。次のコードを見てください。読み取りロックを使用してロックを取得しようとするとtryLock()
、ライター プロセスが枯渇し、書き込みができなくなります。公平性があっても、ライター プロセスは完全に枯渇し、決して実行されません。代わりに、試してみるとreader.readLock()
、ライタープロセスがロックを取得できます。
何か不足している場合はお知らせください。ライタープロセススレッドは、優先度が高く設定されていても、ロックを取得することはなく、ロックを待っている間にスタックします。
で使えるかどうか誰か教えてtrylock()
くださいReadWriteLocks
。