問題タブ [mutex]

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 に答える
6571 参照

c++ - Boost のスコープ付きミューテックスと WinAPI のクリティカル セクションに違いはありますか?

Windows 環境では、Boost のスコープ付きミューテックスは WinAPI のクリティカル セクションを使用していますか、それとも何か他のものですか?

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

multithreading - 静的クラスのデストラクタにはミューテックスが必要ですか?

マルチスレッド環境で使用される静的 (シングルトン) クラスがあります。コンストラクターおよびその他の mrmber 関数でミューテックスを使用します。ただし、デストラクタ用のミューテックスはありません。デストラクタは、他のメンバーオブジェクトのクリーンアップなどのタスクを実行します。ディスストラクタでもミューテックスが必要ですか?

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

c++ - pthread_mutex_lockのセグメンテーション違反

やろうとするとセグメンテーション違反が発生します

これは本当に奇妙なことです。何が原因なのかわかりません。コンストラクターで_mutexを初期化しました

私にできることは何ですか?

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

c# - .NET: Mutex を使用して Web サービスが一度に 1 回だけ呼び出されるようにする

Mutex を使用して Web サービスが一度に 1 回だけ実行されるようにしていますが、WaitOnce と ReleaseMutex では 100% 正しく実行できません。

私はこれを持っています:

すぐに Web サービスに 2 回アクセスしようとすると、2 回目の呼び出しで false が返されませんが、mutex.ReleaseMutex から ApplicationException が発生します ("objectsyncronization メソッドが onsyncronized コードブロックから呼び出されました" - スウェーデン語から大まかに翻訳)

これを行う最善の方法は何ですか?

0 投票する
5 に答える
633 参照

c# - 別のアプリケーションが実行されていることを確実に検出する

WinForms アプリと Windows サービスの 2 つのアプリケーションがあり、どちらも同じマシンで実行されます。WinForms アプリで、サービスが実行されていることを確実に検出できるようにしたい。両方のアプリケーションの設計と実装を完全に制御できます。

私の最初の考えは、サービスによってインスタンス化され、WinForms アプリによって検出可能なMutexを使用することです。

より良いデザインはありますか?

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

c++ - boost::interprocess::scoped_lock を保持している間にスリープすると、決して解放されません

参照に従ってLinuxでIPCを実行しています(匿名ミューテックスの例)。boost::interprocess::shared_memory_object

でラップされた;shared_memory_objectを保持しながら、 を作成して書き込むサーバープロセスがあります。そして、他の人が書いたものは何でも印刷するクライアントプロセス - この場合、それは.interprocess_mutexscoped_lockint

問題が発生しました。サーバーがミューテックスを保持している間にスリープ状態になると、クライアント プロセスはミューテックスを取得できず、永遠に待機します。

バグのあるサーバーループ:

サーバー出力:

クライアントループ:

クライアント出力 (永久に待機):

問題は、ブラケットをsleep呼び出しの前の行に移動すると、すべてが機能することです。なんで?ロックされたミューテックスでスリープすると、ミューテックスが永久にロックされるとは思いませんでした。

私が持っている唯一の理論は、カーネルがサーバー プロセスを起動すると、スコープが終了し、ミューテックスが解放されるが、待機中のプロセスには実行の機会が与えられないというものです。その後、サーバーはロックを再取得します...しかし、それはあまり意味がないようです。

ありがとう!

0 投票する
6 に答える
104077 参照

c++ - ブースト shared_mutex の例 (複数の読み取り/1 つの書き込み)?

一部のデータを頻繁に読み取る必要があるマルチスレッド アプリがあり、そのデータが時々更新されます。現在、ミューテックスはそのデータへのアクセスを安全に保ちますが、複数のスレッドが同時に読み取れるようにし、更新が必要な場合にのみロックアウトできるようにするため、高価です (更新スレッドは他のスレッドが終了するのを待つことができます)。 .

これが本来あるべきことだと思いますがboost::shared_mutex、使い方がよくわからず、明確な例も見つかりませんでした。

始めるために使用できる簡単な例はありますか?

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

c++ - C++/GLFW - Mutex オブジェクトを使用する正しい方法は?

マルチスレッドを広く使用するシミュレーションに取り組んでいます。問題は、これまでデータを保護するためにミューテックス オブジェクトを使用したことがないということです。その結果、多くのセグメンテーション違反が発生しています..

読み取り/書き込み中にミューテックスでロック/ロック解除しようとしていますが、別のセグメンテーション違反が発生します:

もちろん、基本的な状況にロック/ロック解除を適用したテスト プロジェクトを作成し、それが機能しました。GLFW を使用して Mutex オブジェクトを処理する方法を示す基本的な例を次に示します。

私が取り組んでいるプロジェクトはより大きく、5 つのスレッドが実行されており、多くのベクトル、マップ、キューが同時にアクセスされます。コードのどこかで、次のようなことをしようとしました:

VehicleManager:CreateVehicles() メソッドをロック/ロック解除の間に配置する理由は、このメソッドに次の行があるためです。

だから私はベクトルを保護したかった: vehicle_. しかし、結果として、上記のセグメンテーション違反が発生しました。そしてでも:

私は同じセグメンテーション違反を起こしました。

あなたが私の問題の性質を理解できるように、私は自分自身を十分に明確にしたことを願っています. 皆さん全員が GLFW を使用したことがあるわけではないので、このライブラリでミューテックスがどのように機能するかを理解できるように、最初の基本的な例を示しました。

ありがとう !

0 投票する
6 に答える
8336 参照

c++ - pthread_cond_timedwait および pthread_cond_signal のミューテックスをロックしない (Linux の場合)

関連するミューテックスを最初にロックせずに pthread_cond_timedwait を呼び出すこと、および pthread_cond_signal を呼び出すときにミューテックス ロックを取得しないことの欠点はありますか?

私の場合、チェックする条件は実際にはありません。Javaのwait(long)およびnotify()と非常によく似た動作が必要です。

ドキュメントによると、「予測できないスケジューリング動作」が発生する可能性があります。それが何を意味するのかわかりません。

サンプル プログラムは、最初にミューテックスをロックしなくても問題なく動作するようです。

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

c# - 複数のアプリケーション インスタンスを回避するにはどうすればよいですか?

dll 内の関数とコードを呼び出すアプリケーション「myprogram.exe」があります。「myprogram.exe」が呼び出すこの関数の 1 つは、winform の新しいインスタンス「MyForm.cs」を作成し、フォームを使用して表示します。 。見せる();。

n 個の "myprogram.exe" インスタンスを実行できますが、"myprogram.exe" のインスタンスごとに "MyForm.cs" のインスタンスを 1 つだけ実行したいと考えています。

私が抱えている問題は、「MyForm.cs」内でミューテックスを使用してミューテックスを作成していると思っていても、ミューテックスのインスタンスが既に実行されているかどうかを尋ねられ、ミューテックスにもかかわらず、別のインスタンスが作成されることがあります。

「myprogram.exe」のインスタンスが「MyForm.cs」のインスタンスを既に作成しているかどうかを検証するために使用できる別の方法はありますか。