問題タブ [compare-and-swap]
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 - Cでロックを使用せずに構造要素をアトミックに変更する方法は?
構造のいくつかの要素をアトミックに変更したいと思います。私の現在の実装ではミューテックスを使用して重要なコードを保護しています。これを以下に示します。
このコードを posix をサポートしない RTOS に移植することを計画しています。ミューテックスを使用したり、割り込みを無効/有効にしたりせずに、この操作をアトミックに実行したいと考えています。
この操作を行うにはどうすればよいですか? 「アトミックコンペアアンドスワップ機能」(CAS)を使えば可能でしょうか?
java - Java: 永遠に待っているスレッド
次の実行ステートメントを検討してください。
(1) スレッド A: 特定のロック状態をチェックして失敗します (2) スレッド A: したがって、待機状態に移行しようとします (3) スレッド B: 特定のタスクを完了し、スレッド A が必要とするロック状態を変更します (4)スレッド B : シグナル notifyAll()
Java の VM が次の順序 (1)、(3)、(4)、(2) で実行するようにコードを並べ替えるかどうかを検討してください。私はそのような状態が可能であると信じており、そのような場合、通知するスレッドが他にないため、スレッド A が永久に待機状態になるため、問題が発生する可能性があります!
編集 1: ロックの目的で Synchronized ブロックを使用していません。むしろ、コードの一部をロックするために AtomicInteger を使用しています。アトミック変数 N を持つ RWLock クラスを考えてみましょう。リーダーとライターの数がロック状態になると、増加または減少します。この質問は、同期されたブロック/メソッドではなく、そのような状態に適用されます。
java - これは Java Synchronized キーワードをオブジェクトとして実装するための適切な設計ですか?
練習のために、Java Synchronized キーワードを Java オブジェクトとして実装したいと思いました。以下のコードはこれに適した設計だと思いますか? AtomicReference は AtomicBoolean と同様のパフォーマンスを持つと思いますか?
提案後に更新されたコード:
java - 同期ブロックは Java でどのように実装されていますか?
ある時点でスレッドがモニターをめぐって競合します。この時点で 1 つのスレッドが勝つはずです。Java は CPU に組み込まれたアトミック CAS 操作を使用してこれらのモニターを取得しますか?
java - JVMレベルで待機/通知はどのように機能しますか?
待機と通知は、スレッド間で渡されるメッセージのように見えます。これが当てはまる場合、これらのメッセージをバッファリングするためのキューが必要です。もしそうなら、キューにメッセージを追加したりキューからメッセージを削除したりするためのアトミック操作が必要であり、これらのメッセージをリッスンする各 Java スレッドのヘルパー スレッドも必要ですか?
ご意見をお聞かせいただければ幸いです。