問題タブ [multithreading]
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# - インスタンスコンストラクターは静的メンバーを設定しますが、スレッドセーフですか?
私はいくつかのコードをリファクタリングしていlock
て、インスタンスコンストラクターでの使用について疑問に思っています。
確認してください
- インスタンスコンストラクタはスレッドセーフです。
- lockステートメントは、静的な「counter」メンバーではなく、そのコードブロックへのアクセスを防ぎます。
元のプログラマーの意図が各インスタンスにその「カウント」を認識させることであった場合、「カウンター」メンバーへのアクセスを同期して、別のスレッドが新しいスレッドではないことを確認し、MyClass
このスレッドがカウント?
参考までに-このクラスはシングルトンではありません。インスタンスは、単にその数を認識している必要があります。
c# - シングルトンのメンバーのスレッドセーフな使用
複数のクラスが使用する C# シングルトン クラスがあります。Instance
メソッドへのアクセスはToggle()
スレッドセーフですか? はいの場合、どのような仮定、ルールなどによって。いいえの場合、なぜ、どのように修正できますか?
c - マルチスレッドの最良の方法は?
C言語でマルチスレッド化する最良の方法は何ですか? CPU ホグではなく、非常に効率的なものが必要です。ありがとう。
vb.net - IISでコードを実行するために同じスレッドが使用されていることを確認するにはどうすればよいですか?
IIS6でホストされているWebサービスで使用されるサードパーティのdllがあります。問題は、このdllがメモリにロードされると、それを作成したスレッドとは異なるスレッドがdll内のコードを実行しようとすると、例外AccessViolationExceptionがスローされることです。ワーカープロセスはマルチスレッドであり、Webサービスへの各呼び出しはプールからランダムなスレッドを取得します。メモリからアンロードし、必要になるたびにリロードしようとしましたが、フロントエンドのみが.Netであり、残りは管理されていないため、実際にメモリから完全にアンロードされることはありません。VBと.Net2.0を使用しています。助言がありますか?
(ロブウォーカーへの応答)
新しいスレッドを作成し、それを使用してdllを呼び出すことを検討しましたが、スレッドを停止させて呼び出しを待機するにはどうすればよいですか?.Net 3.0で提供されるDispatcherクラスを使用せずに、どのようにして呼び出しをスレッドに委任しますか?非表示のフォームを作成してメッセージループに入れるとうまくいく場合があります。次に、フォームのInvoke()メソッドを呼び出すことができます。しかし、IISでホストされているWebサービス内にフォームを作成すると、多くの問題が発生することがわかります。
c# - 特定のスレッドで例外をスローするためのC#の良い方法はありますか
書きたいコードはこんな感じです。
スレッド A によってフラグが設定されているかどうかを確認するために、スレッド セーフな方法でスレッド B を定期的にチェックできることはわかっていますが、それではコードがより複雑になります。私が使用できるより良いメカニズムはありますか?
定期的なチェックのより具体的な例を次に示します。
silverlight - SilverlightDataBindingクロススレッドの問題
オブジェクトのプロパティにソースがバインドされたImageコントロールがあります(画像への文字列URL)。サービスコールを行った後、データオブジェクトを新しいURLで更新します。例外は、PropertyChangedイベントを呼び出した後、コードを離れた後にスローされます。
データ構造とサービスロジックはすべて、UIの知識がないコアdllで実行されます。ディスパッチャにアクセスできない場合、UIスレッドと同期するにはどうすればよいですか?
PS:ルートビジュアルが別のスレッドにあるため、ディスパッチャーにアクセスするためにApplication.Current.RootVisualにアクセスすることは解決策ではありません(防止する必要がある正確な例外が発生します)。
PPS:これは画像コントロールの問題であり、他のUI要素へのバインドであり、クロススレッドの問題は自動的に処理されます。
.net - .NET スレッドでコード ブロック全体を確実に実行する方法はありますか?
私の C# プログラムには、実行中のテストを表すスレッドがあります。このスレッドは、「実行の中断」というラベルの付いたボタンをクリックすることで中止できます。ThreadAbortedException
スレッド (したがってテスト) がエレガントな方法で終了する (そして事前にいくつかの重要な作業を行う) ために、このボタンは、明確に定義されたいくつかの瞬間にのみ有効になりますThread.ResetAbort()
。 、 スレッド)。
問題は、アボートが可能な時間枠では、一度開始すると最初から最後まで実行する必要があるいくつかのタスクがあり、TAE が怖いことです。ロックはこれに対する解決策を提供しません。また、finally ブロックは解決策を提供しますが、次の方法で重要なコードをラップするのはエレガントではありません。
ただし、他の解決策は見つかりませんでした。
ThreadAbortException
これはブロックの終わりまで干渉を遅らせる別の方法ですか?
performance - 単一の CPU での複数のスレッドとパフォーマンス
ハイパースレッディングを持たない単一の CPU を搭載したコンピューターで複数のスレッドを使用すると、パフォーマンス上の利点はありますか?
c# - C#のマルチスレッドスプラッシュ画面?
アプリケーションの読み込み中にスプラッシュ画面を表示したい。システムトレイコントロールが関連付けられたフォームがあります。このフォームの読み込み中にスプラッシュ画面を表示したいのですが、WebサービスAPIにアクセスしてドロップダウンを入力するため、少し時間がかかります。また、ロードする前に依存関係の基本的なテストを行いたいと思います(つまり、Webサービスが利用可能であり、構成ファイルが読み取り可能です)。起動の各フェーズが進むにつれて、進行状況に応じてスプラッシュ画面を更新したいと思います。
私はスレッドについてたくさん読んでいますが、これをどこから制御すべきか(main()
方法は?)に迷っています。また、どのようにApplication.Run()
機能するのかがわかりません。これは、このためのスレッドを作成する必要がある場所ですか?さて、システムトレイコントロールを備えたフォームが「生きている」フォームである場合、スプラッシュはそこから来る必要がありますか?とにかくフォームが完成するまでロードされませんか?
私はコードの配布物を探しているのではなく、アルゴリズム/アプローチの詳細を探しているので、これを一度だけ理解することができます:)
.net - WCF サービス STA を作成する方法 (シングルスレッド)
UI コンポーネントを含む WCF サービスを使用しているため、強制的に STA モードになります。
サービスの動作を STA モードに設定するにはどうすればよいですか?
このサービスは、画像分析用の UI ウィンドウ (ビュー ポートとして使用) を開く WPF DLL ファイルへの参照を使用します。サービスがその項目のインスタンスを作成しようとすると (ウィンドウから継承)、例外がスローされます。
呼び出しスレッドは STA でなければなりません