4

マルチスレッド プロセスでは、I/O で 1 つのスレッドがビジー状態の場合、プロセス全体がブロックされますか?

私の知る限り、プログラム内のスレッドをどのように管理するかは、プログラマーに完全に依存します。I/O のない別のスレッドがある場合、プロセッサは決してアイドル状態にならず、このスレッドの実行を開始します。ただし、一方のスレッドが他方の結果を待つような分割スレッドでのプロセスでは、プロセス全体がブロックされます。

さらに情報を追加する必要がある場合は、コメントしてください。他の説明はありますか?

4

1 に答える 1

6

プロセスにスレッドが 1 つしかない場合は、はい。

プロセスに複数のスレッドがある場合、オペレーティング システムがマルチスレッドをサポートしていれば、通常は no です。

この問題は、ユーザー スレッドの基本的な実装に関しても対処できます。マルチスレッド モデルにはさまざまなモデルがあり、ユーザー スレッドを実装するには、カーネル スレッドにマップする必要があります。

  • 多対一: 1 つのカーネル スレッドに対して多数のユーザー スレッド

  • 1 対 1 : 各ユーザー スレッドはカーネル スレッドに割り当てられます。

  • 多対多: 多くのユーザー スレッドが異なるカーネル スレッドに分割されます。

多対 1 の場合、スレッド内の 1 つのブロック操作 (システム コール) がプロセス全体をブロックする可能性がありますこの欠点は、1 対 1 モデルには存在しません。

于 2012-06-10T06:49:49.427 に答える