問題タブ [thread-state]
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.
multithreading - win32 でスレッドの現在の状態 (ブロック、中断、実行中など) を取得するにはどうすればよいですか?
この情報を生成する文書化された API が見つかりませんでした。
友人から、NtQuerySystemInformation を使用するよう提案されました。それを調べた後、情報はそこにあります(SYSTEM_THREADを参照)が、文書化されておらず、あまりエレガントではありません-システム内のすべてのスレッドの情報を取得します。
これを行うための、より洗練された、できれば文書化された API を知っていますか?
c# - スレッドが正常に終了したかどうかを確認する方法は?
ThreadStateの MSDN ドキュメントによると、Stopped 状態には、スレッドの終了、またはスレッドの中止という 2 つの方法のいずれかによって入ることができます。
スレッドが正常に終了して Stopped 状態になったかどうかを判断するメカニズムはありますか? ありがとう!
c# - スレッドが実行を終了したかどうかを確認する方法
次の問題があります:
スレッドが実行を終了したかどうか、つまりスレッド メソッドが返されたかどうかをチェック (C#) したい。私が今行っているのは callThread.Join(1)
ですが、これにより 1 ミリ秒の遅延が発生します。スレッドが終了したかどうかを簡単に確認する方法はありますか。調べるThread.ThreadState
だけでも面倒そうです。
c# - マルチスレッドワーカースレッドのステータス
スレッドを次のように作成します
threadCount(= 100、150、255など)を使用しますが、動作しているスレッドの数を知ることができません。実行時に。
そして、すべてのスレッドがいつジョブを終了するかを制御したいと思います。そして、backgroundWorkerのRunWorkerCompletedイベントのように、「すべてのスレッドが停止し、ジョブが完了しました...」のようなメッセージを表示します。
c++ - c++/windows でスレッド状態を取得する
このアプリケーションがある
ため、システム内のスレッドの現在のステータスを取得する関数が必要です: http://www.softwareverify.com/cpp/thread-status-monitor/index.html
ある種の API 関数か何かを使用している必要があります... C++/Windows で自分でスレッド状態を取得するにはどうすればよいですか?
ありがとう :)
(これが今日の最後の質問です。約束します:))
java - 終了したスレッドの復活
一連のスレッド オブジェクトを配列リストに格納しています。これらのスレッドをランダムに開始できるようにしたい。同じスレッドを複数回開始できます。スレッド オブジェクトを開始する前に、スレッドが生きているかどうか、およびスレッドの状態が NEW または TERMINATED のいずれかであるかどうかを確認します。この制限は、「ビジー」スレッドを妨害したくないためです。現在、新しいスレッドの場合、これは正常に機能します。しかし、TERMINATED スレッドの場合、例外が発生します。
スレッドが終了したら、「新しい」スレッドに戻るべきではありませんか? または、スレッドは「使い捨て」ですか?一度使用して完了しますか?
c# - このスレッド状態関数は何をしますか?
次のコードは、ThreadState を、Unstarted、Running、WaitSleepJoin、および Stopped の 4 つの最も有用な値のいずれかに取り除きます。
上記を本で読みましたが、著者がここで何を説明したいのかよくわかりません。私は以下のようにテストしました:
}
実行結果は次のとおりです。 Running Running Running Running Unstarted WaitSleepJoin Stopped
出力の最後の 3 行は単純明快ですが、他のすべての出力が Running 状態を出力するのはなぜでしょうか?
ありがとう!
c++ - win32 スレッドが c++ で Wait または Join または Sleep 状態にあるかどうかを判断する方法
私が実際に検索するのは、.net ThreadState Enumerationに相当する c++/win32です。
助言がありますか?
c# - プロファイリングAPI(ICofProfilerInfoまたは任意のIMetadataImportまたはその他の方法)によるSystem.Threading.Thread.ThreadStateの読み取り方法
プロファイリングAPIICofProfilerInfoまたはIMetadataImportインターフェイス、あるいはアンマネージコードから他の方法でマネージスレッドのSystem.Thread.ThreadStateプロパティを読み取る方法はありますか?
たとえば、次のようなものです。
c# - C#でサーバーの稼働状況を確認します。サーバープロセス(業務)の状態を確認する
クライアント アプリケーションは、サーバー上でプロセスを開始します (RIA 経由ですが、実装は重要ではありません)。プロセスとは、ビジネス コードが実行されていることを意味し、CPU で実行されている実際のプロセスを指しているわけではありません。
コードはC#です。
次に、クライアントはプロセスのステータスを確認します。失敗、完了、まだ実行中。
基本は比較的簡単に実装できます。クライアントが定期的にサーバーをポーリングして、プロセスIDに関連付けられたステータスをチェックするプロセスをチェックできるサーバーにプロセスIDを静的に保存します。
このあたりのエッジ ケースには、もう少し作業が必要です。コードが例外を処理せずにスレッド (プロセス) を異常終了させ、プロセスに関連付けられたステータスを正常に失敗に設定する、致命的および壊滅的な理由。このシナリオでは、クライアントはプロセスがまだ進行中であると想定し続けます。
別のスレッドでプロセスを実行し、スレッド ID を追跡することを考えていました。クライアントがサーバーを呼び出してプロセスの状態を確認する場合、プロセスを実行しているスレッドの IsAlive プロパティを確認できます。
これが問題になる可能性のあるシナリオがあるかどうか疑問に思っていますか? スレッドがハングしていても、IsAlive が True を返す可能性があるかもしれません。
別のアプローチは、サーバー上のプロセスに、クライアントが状態をチェックするときに使用できるタイムスタンプを定期的に設定させることです。状態をチェックするコードは、タイムスタンプがどれくらい古いかを確認し、選択した間隔 (たとえば 2 分) に基づいて、プロセスがまだ実行されているかどうかを判断できます (最後にタイムスタンプが書き込まれてから 2 分経過していない)、またはプロセスは例外なくタイムアウトしました (スレッドが最後のタイムスタンプを書き込んでから 2 分以上経過しました)。すべてのタイムスタンプはメモリ内で行われます。
これに関して有益なベスト プラクティスはありますか? これに最善のアプローチをする方法について、特別な洞察やヒントを持っている人はいますか? 私はまた、人々が持っている他のシナリオやアイデアを受け入れることができますか?