12

Windowsは(通常)1秒あたりどのくらいの頻度でスレッドを切り替えますか?これは.NETスレッドとは異なりますか?または、逆に質問します。スレッド(たとえば、通常のスレッド優先度)の実行はどのくらい許可されますか?

4

3 に答える 3

12

Windows コンテキストが切り替わる頻度は、システムの "quantum" によって異なります。このクォンタムは、OS がクライアントかサーバーかによって、10 ~ 15 ミリ秒 (1 秒あたり 66 ~ 100 回) の範囲になります。詳細については、Joe Duffy の本Concurrent Programming on Windowsを読むことをお勧めします。このようなことについて非常に詳細に説明します-たとえば、「クライアントOSは... 2クロック間隔です....サーバーOSでは... 12クロック間隔です」という詳細。また、彼の記事 [CLR Inside Out: Using Concurrency for Scalability][1] は必読です。

量子長を「編集」することができます。システム プロパティの [パフォーマンス オプション] の [詳細設定] で [次の最高のパフォーマンスに調整する] を [プログラム] に設定すると、クォンタムが短くなります。「バックグラウンド サービス」に設定すると、クォンタムが長くなります。

コンテキストを切り替える理由がない場合、スレッドは必要なだけの時間を取得します。

[1] http://www.360doc.cn/article/28217_2474333.html

于 2012-09-07T15:13:40.190 に答える
1

A context switching rate of 300 per second per processor is a moderate amountソースで言う。

Windows2000 には、それを測定するための Pviewer ユーティリティがあります。

于 2012-09-07T15:12:34.157 に答える
0

一般的なシステムでは、これは I/O 負荷に大きく依存します。スレッドが I/O を呼び出し、ブロックされ、後で再び準備が整うと、多くのディスクおよびネットワーク アクティビティによって多くのコンテキスト スイッチが生成されます。実行中のアプリの複雑さと設計も、コンテキスト切り替え率に影響します。多くのスレッド、多くのロック、ロック内での過剰な作業、通信データのサイズと比較して多すぎるスレッド間通信、ばかげたポーリングなどを持つアプリは、文脈変化率を上げます。

ほとんどのシステムでは、ほとんどの場合、「量子」、「タイムスライス」などは無関係です。I/O 駆動のプリエンプティブ マルチタスクの脚注にすぎません。これは、より準備ができて CPU を集中的に使用するボックスでのみ定期的に発生します。 、コアよりもスレッド、つまり。非常に過負荷になっているアプリや、CPU を集中的に使用するアプリを実行しているアプリ。

通常の優先順位のスレッドは、通常、I/O を待機することを選択するか、別のスレッドからの信号を送ることによって、横取りされるまで実行できます。I / Oまたはシグナリングを行わない場合でも、つまり. は完全に CPU バウンドであるため、ボックスが過負荷にならない場合 (つまり、コアより多くのスレッドが準備されていない場合) は、永久に実行される可能性があります。

于 2012-09-07T17:19:31.083 に答える