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

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

locking - 両方のプロセスに触れることなく相互排除

私には独特の問題があります。1つのファイルにアクセスしようとしている2つのプロセス(P0とP1)があります。P0はファイルに情報を書き込んでおり、P1は情報を読み取っています。P0が書き込みを終了する前にP1が読み取りを行っている、2つの間に競合状態が発生しています。ロック、セマフォなどの使用を検討しました。ただし、P1は、変更が許可されていない一連のコードに存在し、現在、上記の修正案をサポートする実装はありません。

両方のコードセットに触れることなく、この競合状態を取り除く方法はありますか?

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

c++ - Cの多くのプロセスでファイルを開く問題

Iamはc++で動作しています。アプリケーションの実行中に問題が発生しました。dllが含まれています。dllコードはアプリケーションに適しています(プロセスが必要です)。すべての関数内でfopenを使用してアプリケーション全体にログファイル(xmlファイル)を書き込みました( dllソース)、ここで「別のプロセスで使用しているため、ファイルにアクセスできません」などの例外が発生します。。私を助けてください、ファイルを管理する方法、一度に1つのプロセスしか使用できない場所...

0 投票する
7 に答える
97097 参照

multithreading - 条件変数とセマフォ

セマフォを使用する場合と条件変数を使用する場合

0 投票する
4 に答える
5346 参照

synchronization - Cassandra 相互排他ロック (同期)

カサンドラの組み込み関数を使用してクライアントを同期する方法はありますか?

いくつかの操作を実行する必要があり、それらの操作を他のすべてのクライアントと同期する必要があります (相互排除)。

RDBMSでは、テーブル全体をロックするか、同期のために特別なテーブルを準備して、SELECT ... FOR UPDATEを使用できます。

サードパーティのアプリなしで Cassandra でこれを実現できますか? そうでない場合、それを行う最良の方法は何ですか?好ましい言語は Java と Python です。

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

algorithm - ピーターソンのアルゴリズム: デッドロックが発生する可能性

ピーターソンのアルゴリズムの場合、フラグを false に設定する前に、クリティカル領域から出た直後にプロセスが横取りされます。その後、デッドロックは発生しません。?? 助けてください!

0 投票する
4 に答える
430 参照

php - Cとphpの間でファイルをロックする

タイトルにはファイルが記載されていますが、ファイルである必要はありません。どんなロック機構でもかまいません。

状況は次のとおりです。Cで記述されたデーモンプロセスと、phpで記述されたWebページがあります。特定の状況下でCデーモンがファイルをロックし、phpが状況を検出して、システムがビジーであることをクライアント側に通知するように、相互ロックする方法が必要です。

これを行う簡単な方法はありますか?

ありがとう、

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

process - 私のソリューションは相互排除の要件を満たしていますか

相互排除を満たすために2つのプロセスを書きましたが、そうであるかどうかはわかりません..私の初期フラグ値は0です.

実際、それらはまったく同じです。これらの2つのプロセスは相互排除を満たしていますか? どの要件に違反しているのかわかりません..

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

windows - Citrix環境でのユーザーセッション全体の相互排除

Citrix環境で実行されるアプリケーションがあります。アプリケーションは、異なるユーザーセッションの複数のユーザーが同時に実行できます。私のアプリケーションでは、すべてのユーザーセッションで相互に排他的である必要があるファイルに書き込んでいます。さまざまなユーザーセッションからのファイルへの書き込みを回避するためにMutexを試しましたが、一部のシナリオではさまざまなユーザーセッションがMutexオブジェクトが既に作成されているかどうかを検出できなかったため、Mutexの使用に失敗しました。

すべてのユーザーセッションで相互排除を実現するには、次のアプローチのどれが優れているかを誰かに教えてもらえますか?

  1. 名前付きパイプの使用:名前付きパイプがすでに存在する場合、アプリケーションは、パイプを開いたアプリケーションインスタンスによってパイプが閉じられるまで待機します。それ以外の場合は、名前付きパイプを作成して、ロックの取得を示します。
  2. ロックファイルの使用:ディスク上に通常のファイルを作成して、ロックの取得を示し、ロック解除を実行する必要がある場合は削除します。
0 投票する
7 に答える
572 参照

c# - 相互排除

さまざまなスレッドからのコレクション (この場合はキュー) を使用するアプリケーションがあります。オブジェクトはあるスレッドでキューに入れられ、別のスレッドでは別のオブジェクトがキューから取り出されます。

これらのアクションは同時に発生する可能性があり、コレクション カウンターが再定義されているときに、引数の範囲外例外などの例外で解決されます。

私は「見栄えの良い」ものと、これらのアクションを互いに除外する正しい理由を探しています。

  1. 「見栄えが良い」とは、ロック(オブジェクト)メカニズムを含むこのコレクションから派生した独自のコレクションを作成したくないということです

  2. 私が持っていたブレーンストーミングのアイデアは使いたくありません。これはかなり「醜い」ものです。

もちろん、ロックまたはミューテックスを使用することを考えましたが、それは、これらのアクションを各スレッドから呼び出されるプロシージャにラップし、エンキューまたはデキューすることを決定した場合にのみ当てはまり、これも長くて「醜い」ものになります。

編集:
誰も私の答えを下に見ていないようだから

コレクション自体にロック機構を使用しました

0 投票する
0 に答える
347 参照

concurrency - 相互排除問題

前述の相互排除問題に対する次の解決策は、1966 年に H. Hyman によって Communications of the ACM で公開されました。次のように、疑似 Algol でリストされました。

なぜ失敗するのですか?完全な答えではありません.2つのプロセスしか処理しないため、最初に問題が発生するため、スケーラブルではありません...