問題タブ [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.

0 投票する
2 に答える
156 参照

c - Cでロックを使用せずに構造要素をアトミックに変更する方法は?

構造のいくつかの要素をアトミックに変更したいと思います。私の現在の実装ではミューテックスを使用して重要なコードを保護しています。これを以下に示します。

このコードを posix をサポートしない RTOS に移植することを計画しています。ミューテックスを使用したり、割り込みを無効/有効にしたりせずに、この操作をアトミックに実行したいと考えています。

この操作を行うにはどうすればよいですか? 「アトミックコンペアアンドスワップ機能」(CAS)を使えば可能でしょうか?

0 投票する
1 に答える
176 参照

java - Java: 永遠に待っているスレッド

次の実行ステートメントを検討してください。

(1) スレッド A: 特定のロック状態をチェックして失敗します (2) スレッド A: したがって、待機状態に移行しようとします (3) スレッド B: 特定のタスクを完了し、スレッド A が必要とするロック状態を変更します (4)スレッド B : シグナル notifyAll()

Java の VM が次の順序 (1)、(3)、(4)、(2) で実行するようにコードを並べ替えるかどうかを検討してください。私はそのような状態が可能であると信じており、そのような場合、通知するスレッドが他にないため、スレッド A が永久に待機状態になるため、問題が発生する可能性があります!

編集 1: ロックの目的で Synchronized ブロックを使用していません。むしろ、コードの一部をロックするために AtomicInteger を使用しています。アトミック変数 N を持つ RWLock クラスを考えてみましょう。リーダーとライターの数がロック状態になると、増加または減少します。この質問は、同期されたブロック/メソッドではなく、そのような状態に適用されます。

0 投票する
2 に答える
191 参照

java - これは Java Synchronized キーワードをオブジェクトとして実装するための適切な設計ですか?

練習のために、Java Synchronized キーワードを Java オブジェクトとして実装したいと思いました。以下のコードはこれに適した設計だと思いますか? AtomicReference は AtomicBoolean と同様のパフォーマンスを持つと思いますか?

提案後に更新されたコード:

0 投票する
2 に答える
140 参照

java - 同期ブロックは Java でどのように実装されていますか?

ある時点でスレッドがモニターをめぐって競合します。この時点で 1 つのスレッドが勝つはずです。Java は CPU に組み込まれたアトミック CAS 操作を使用してこれらのモニターを取得しますか?

0 投票する
2 に答える
1258 参照

java - JVMレベルで待機/通知はどのように機能しますか?

待機と通知は、スレッド間で渡されるメッセージのように見えます。これが当てはまる場合、これらのメッセージをバッファリングするためのキューが必要です。もしそうなら、キューにメッセージを追加したりキューからメッセージを削除したりするためのアトミック操作が必要であり、これらのメッセージをリッスンする各 Java スレッドのヘルパー スレッドも必要ですか?

ご意見をお聞かせいただければ幸いです。