問題タブ [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# - System.Threading.Timer はどの程度スケーラブルですか?
私は s を利用する必要があるアプリを書いていますがTimer
、非常に多くの s を利用する可能性があります。System.Threading.Timer
クラスはどの程度スケーラブルですか? ドキュメントには「軽量」とだけ書かれていますが、それ以上の説明はありません。これらのタイマーは、 に代わってすべてのコールバックを処理する単一のスレッド (または非常に小さなスレッドプール) に吸い込まれますか?それとも、Timer
それぞれTimer
に独自のスレッドがありますか?
質問を言い換える別の方法は次のとおりだと思います:どのようにSystem.Threading.Timer
実装されていますか?
c# - WSACancelBlockingCall 例外
わかりました、コードから奇妙な例外がスローされ、何年も悩まされてきました。
MSDN はこれに関してあまり役に立ちません: http://msdn.microsoft.com/en-us/library/ms741547(VS.85).aspxそして、この問題のトラブルシューティングを開始する方法さえ知りません。1 日に 4 ~ 5 回しかスローされず、テスト環境では一度もスローされません。本番サイトのみ、およびすべての本番サイトで。
この例外について尋ねる投稿がたくさん見つかりましたが、何が原因で、どのように処理または防止するかについての実際の決定的な回答はありません。
コードは別のバックグラウンド スレッドで実行され、メソッドが開始されます。
次に、すべての新しい接続をジョブとして別のスレッド プールに配置するループを実行します。アプリのアーキテクチャが原因でさらに複雑になりますが、基本的には次のとおりです。
そこから、pool
独自のスレッドで各ジョブを個別に処理する独自のスレッドがあります。
私の理解では、AcceptTcpClient() はブロッキング呼び出しであり、何らかの方法で winsock がスレッドにブロッキングを停止して実行を継続するように指示しています..しかし、なぜですか? そして、私は何をすべきですか?例外をキャッチして無視するだけですか?
まあ、他のスレッドがソケットを閉じていると思いますが、それは確かに私のコードからのものではありません。私が知りたいのは、このソケットは接続しているクライアント (ソケットの反対側) によって閉じられているのか、サーバーによって閉じられているのかということです。現時点では、この例外が発生するたびに、リッスン ポートがシャットダウンされ、サービスが効果的に閉じられるためです。これが遠隔地から行われる場合、それは大きな問題です。
あるいは、単に IIS サーバーがアプリケーションをシャットダウンし、すべてのバックグラウンド スレッドとブロック メソッドをキャンセルしただけでしょうか?
multithreading - TCP サーバー アプリケーションで使用されるスレッドの数をどのように最小化しますか?
クライアントの TCP (または UDP) リクエストにサービスを提供するサーバー アプリケーションを実装する際に人々が使用する戦略 (設計パターン、実装手法、ベスト プラクティスなど) を探しています。
この質問の目的のために、リクエストが比較的長期間 (数分) 存続し、トラフィックが時間に敏感であるため、メッセージへの応答に遅延が許容されないと仮定しましょう。また、クライアントからのリクエストを処理し、他のサーバーへの独自の接続を確立しています。
私のプラットフォームは .NET ですが、基盤となるテクノロジはプラットフォームに関係なく同じであるため、どの言語でも回答が得られることに興味があります。
c# - 異なる CPU コアでスレッドを生成するにはどうすればよいですか?
たとえば、WAV ファイルのリストを MP3 にエンコードするなど、計算コストの高い処理を行う C# のプログラムがあるとします。通常はファイルを 1 つずつエンコードしますが、たとえば、プログラムに CPU コアの数を割り出し、各コアでエンコード スレッドを起動させたいとしましょう。そのため、クアッド コア CPU でプログラムを実行すると、プログラムはそれがクアッド コア CPU であることを認識し、動作するコアが 4 つあることを認識し、エンコーディング用に 4 つのスレッドを生成し、それぞれが個別に実行されます。 CPU。どうすればいいですか?
また、コアが複数の物理 CPU に分散されている場合、これは何か違うでしょうか? たとえば、2 つのクアッド コア CPU を搭載したマシンを使用している場合、特別な考慮事項はありますか、または 2 つのダイの 8 つのコアは Windows で等しいと見なされますか?
python - Python スレッドにはバグがありますか?
信頼できるコーダーの友人が、Python の現在のマルチスレッド実装には深刻なバグがあると言いました。この噂について何が言えますか?
c++ - C++ スレッドに関する質問 - スレッドが終了したことを示す値を設定する
以下は安全ですか?
私はスレッド化が初めてで、時間のかかるプロセスを C++ プログラムの別のスレッドに委譲したいと考えています。ブースト ライブラリを使用して、次のようなコードを記述しました。
thrd = new boost::thread(boost::bind(&myclass::mymethod, this, &finished_flag);
finished_flag は私のクラスのブール値のメンバーです。スレッドが終了すると、値が設定され、プログラムのメイン ループがその値の変更をチェックします。私は 1 つのスレッドしか開始しないため、これで問題ないと思います。値を変更するのはそのスレッドだけです (スレッドを開始する前に初期化される場合を除く)。ロックやミューテックスなどを使用する必要がある
multithreading - 競合状態とは何ですか?
マルチスレッド アプリケーションを作成するときに発生する最も一般的な問題の 1 つは、競合状態です。
コミュニティへの私の質問は次のとおりです。
- レースコンディションとは?
- それらをどのように検出しますか?
- それらをどのように扱いますか?
- 最後に、それらの発生をどのように防止しますか?
multithreading - デッドロックとは?
マルチスレッド アプリケーションを作成する際に発生する最も一般的な問題の 1 つは、デッドロックです。
コミュニティへの私の質問は次のとおりです。
デッドロックとは?
それらをどのように検出しますか?
それらを処理しますか?
最後に、それらの発生をどのように防止しますか?
multithreading - セマフォとは?
セマフォは、マルチスレッドの問題を解決するために頻繁に使用されるプログラミングの概念です。コミュニティへの私の質問:
セマフォとは何ですか?また、どのように使用しますか?
multithreading - ミューテックスとは
ミューテックスは、マルチスレッドの問題を解決するために頻繁に使用されるプログラミングの概念です。コミュニティへの私の質問:
ミューテックスとは何ですか?どのように使用しますか?