問題タブ [critical-section]
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.
pthreads - pthreads : クリティカル セクション内からの pthread_cond_signal()
スレッド A に次のコードがあります。pthread_cond_wait()
スレッドBに次のコードがあり、スレッドAに通知します
他にスレッドがない場合、pthread_cond_signal(&my_wait)
以下に示すようにクリティカル セクション ブロックの外に移動しても違いはありますか?
critical-section - 重要なセクション
私は何かについて確信が持てません。
たとえば、C++ で critical_section/mutex/semaphor を使用すると、busy_wait の問題はどのように防止されますか?
私が意味するのは、スレッドがクリティカル セクションに到達し、クリティカル セクションが他のスレッドによって占有されている場合、スレッドがサイクル タイムを浪費して何も待たないようにするものは何ですか?
たとえば、TryEnterCriticalSection を呼び出して、スレッドが所有権を取得したかどうかを確認し、それ以外の場合は sleep(0) を呼び出す必要がありますか?
私は少し困惑しています
ありがとう
cuda - CUDAでのクリティカルセクションの実装
アトミック命令を使用してCUDAにクリティカルセクションを実装しようとしていますが、問題が発生しました。問題を示すためのテストプログラムを作成しました。
このコードは、残念ながら、私のマシンを数秒間ハードフリーズし、最後に終了して、メッセージを出力します。
つまり、これらのwhileループの1つが戻ってこないということですが、これは機能するはずです。
リマインダーとして、atomicExch(unsigned int* address, unsigned int val)
アドレスに格納されているメモリ位置の値をアトミックに設定し、その値をval
返しold
ます。したがって、私のロックメカニズムの背後にある考え方は、最初はであるということです0u
。したがって、1つのスレッドはループを通過し、他のすべてのスレッドは。として読み取られるためwhile
、ループを待機する必要があります。次に、スレッドがクリティカルセクションで完了すると、ロックがリセットされ、別のスレッドが入ることができるようになります。while
locks[id]
1u
0u
私は何が欠けていますか?
ちなみに、私はコンパイルしています:
multithreading - オブジェクトから読み取るときにオブジェクトをロックする必要がありますか?
複数のスレッドで共有されるオブジェクトがあるプログラムを書いています。
- A)複数の書き込みスレッドがオブジェクトに書き込みます(すべて同じ関数を実行します)
- B)5秒ごとにオブジェクトにアクセスする読み取りスレッド
- C)ユーザーリクエストがあるオブジェクトにアクセスする読み取りスレッド
複数のスレッドが同時にオブジェクトに書き込むことは望ましくないため、オブジェクトに書き込むときは明らかにオブジェクトをロックする必要があります。
私の質問は次のとおりです。
- オブジェクトから読み取るときにもオブジェクトをロックする必要がありますか?
- 書くときにオブジェクトをロックするだけなら、クリティカルセクションで十分だと思うのは正しいですか。しかし、読み取りまたは書き込み時にオブジェクトをロックする場合、ミューテックスが必要ですか?
Microsoft Officeでは、Wordの2つのインスタンスが読み取り/書き込みアクセスモードでドキュメントにアクセスすることはできないため、この質問をしています。ただし、ドキュメントを読み取り/書き込みモードで開いているときに、Wordの別のインスタンスを開いて、読み取り専用モードでドキュメントにアクセスすることができます。同じロジックがスレッドに適用されますか?
c++ - クリティカルセクションを使用する代わりにキュー変数アドレスをロックする方法は?
2 つのスレッドとグローバル キューがあり、1 つのスレッド (t1) がデータをプッシュし、別のスレッド (t2) がデータをポップします。Windows API を使用してクリティカル セクションでそのキューを使用できる関数を使用せずに、この操作を同期したかったのです。
Queue はグローバルです。同期の方法を知りたいのですが、Queue のアドレスをロックすることによって行われますか?
上記の問題にBoost Libraryを使用することは可能ですか?
c++ - OpenMPでロックを使用する方法は?
2つの異なるコアで実行されている2つのC++コードがあります。どちらも同じファイルに書き込みます。
OpenMPを使用して、クラッシュがないことを確認するにはどうすればよいですか?
c++ - 単体テスト Refcounted Critical Section クラス
クリティカル セクションとロックを管理する必要がある単純なクラスを検討しています。これをテスト ケースでカバーしたいと思います。これは理にかなっていますか? どうすればそれを行うことができますか? クラスが機能することを確認する唯一の方法は非常に複雑なスレッド シナリオをセットアップすることであり、それでも Win32 でクリティカル セクションのリークをテストする適切な方法がないため、これは困難です。正しく動作していることを確認するより直接的な方法はありますか?
コードは次のとおりです。
CriticalSection.hpp:
CriticalSection.cpp:
php - PHPでクリティカルセクションを保護するには?
このトピックについていくつか検索しましたが、価値のあるものは何も見つかりませんでした。
PHP のデフォルト セッション ハンドラを使用しない場合、リクエスト レベルでのセッション ロックはありません。だから、私は自分で重要なセクションを保護する必要があります。
Java では、同期しました。C# にはlockがあります。
PHPでは、それを行う方法は?
multithreading - CriticalSection - MFC の使用方法
私は小さな例に取り組んでおり、私の例でクリティカルセクションを使用することに少し興味があります。私がやっていることは、CStringArray(10個の要素が追加されている)を持っていることです。これらの10個の要素(文字列)を別のCStringArrayにコピーしたい(スレッドとクリティカルセクションを理解するためにこれを行っています)、2を作成しましたスレッド、Thread1 は最初の 5 つの要素を別の CStringArray にコピーし、Thread2 は残りをコピーします。ここでは 2 つの CStringArray が使用されています。一度に 1 つのスレッドしかアクセスできないことがわかっています。または他の方法。
c# - C# 配列のスレッド セーフ
2つの異なるスレッドがあります:
- C# 配列からの 1 つの読み取り (たとえば、最初の場所から)、
- もう 1 つは同じ C# 配列に書き込みますが、別の場所 (最後の場所など) に書き込みます。
スレッドセーフかどうか
(そして、ここでは読み取りも書き込みもロックしないことを意味します)