問題タブ [mutual-exclusion]
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 - コードが壊れて完全な同期が提供されないことを示すために、一連のインターリーブ スレッドを提供する方法は?
私は次のコードが何をするかを知っており、条件変数が 1 つしかないのに 2 つ必要であるため、同期の壊れたコードである理由を知っていますが、それが機能しないことを示すために一連のインターリーブ スレッドを提供する方法がわかりません。 . このコードが機能しない理由を例で説明できますか?
algorithm - 2 プロセス ソリューション アルゴリズム 1
2 プロセス ソリューション アルゴリズム 1 は次のとおりです。
相互排除が満たされていることを理解しています。P0 がクリティカル セクションにあるとき、P1 はクリティカル セクションを出るまで待機するためです。そして、P0 の更新ターンの後、P1 はクリティカル セクションに入ります。このアルゴリズムで進歩が満たされない理由がわかりません。
進行状況は、プロセスがクリティカル セクションに待機しているプロセスがない場合、プロセスは待機せずにクリティカル セクションに入ることができるはずです。
P0 の更新はクリティカル セクションを出た後に順番に行われるため、while ループで待機している P1 はクリティカル セクションに入ることができるはずです。なぜ進展がないのか教えてください。
c - netfilter フック内の空のクリティカル セクションが発生するのはなぜですか?
私はこのフックを書きました:
初期セクション:
静的変数を定義しました:
間にコードがないため、エラーはないlock
とunlock
予想されますが、このモジュールを実行すると、カーネルは次のエラーを生成します。
エラーが更新されました:
ここに完全な syslog エラーがあります: http://paste.ubuntu.com/6617614/
c++ - std::unique_lockまたは std::lock_guard?
2 つの使用例があります。
A. 2 つのスレッドのキューへのアクセスを同期させたい。
B. 2 つのスレッドのキューへのアクセスを同期し、条件変数を使用したい。スレッドの 1 つが、コンテンツが他のスレッドによってキューに格納されるのを待つためです。
AI の使用例については、 を使用したコード例を参照してくださいstd::lock_guard<>
。BI の使用例については、 を使用したコード例を参照してくださいstd::unique_lock<>
。
2 つの違いは何ですか?どのユースケースでどちらを使用する必要がありますか?
multithreading - 3 つのスレッドの同期実行で 3 つのセマフォはどのように機能しますか?
あるシステムでは、以下に示すように、S1、S2、および S3 の 3 つのセマフォを使用して、3 つのスレッドの実行が同期されます。セマフォ S1 と S2 はゼロに初期化され、セマフォ S3 は 1 に初期化されます。3 つのセマフォはすべて、以下に示すコードのセクションでのみ使用されます。
... ... ...
変数 x が整数の共有変数として定義され、1 に初期化され、上記以外のコードのセクションで値が割り当てられていない場合、すべてのスレッドの実行が終了したときの値はどうなるでしょうか? 3 つのセマフォの値はどうなるでしょうか?
オペレーティング システム試験の準備のために、この過去の論文を解こうとしています。変数 x がどのように変更されるか、および 3 つのセマフォがどのように連携するかがわかりません。セマフォがどのように連携し、変数がどのように変更されるかを順を追って説明していただければ幸いです。
他にも練習用の同様の例がある場合は、ためらわずにリンクしてください。
java - スレッドによる取得前の release の呼び出し
複数のスレッドの小さなプログラムを作成しており、セマフォを使用して相互排除を強制しています。しかし、問題が頭に浮かびます。
Semaphore.release
が前に呼び出された場合はどうなりSemaphore.acquire
ますか?
私のはうまくいきます。それは悪い習慣ですか、それとも大丈夫ですか?