マルチスレッドについて非常に基本的な質問があります。一度に 10 個のスレッドを実行すると、単一のインスタンスで 1 つのスレッドのみがアクティブになり、スレッド間の切り替えが行われますか、または複数のスレッドが単一のインスタンスで実行できますか?
4 に答える
ハードウェアに依存します。現在の多くのプロセッサ チップには複数の CPU が組み込まれており、CPU 自体がいくつかのスレッドをインターリーブできる場合があります。大規模なサーバーには、数十個のプロセッサ チップが搭載されている場合があります。このようなシステムでは、10 個のスレッドすべてが完全に同時に実行される可能性があります。
一度に実行されるスレッドは 1 つだけです。プロセッサはスレッドをすばやく切り替えます。たとえば、スペル チェックを備えたテキスト エディタを考えてみましょう。
u type-これは 1 つのスレッドであり、prog chks fr エラーです-それは別のスレッドです
それらがマルチスレッド化されている場合、プロセス全体がメモリ内にスペースを取得し、異なるスレッドが同時に実行されます
それは本当にあなたのCPUとプログラムの設計に依存します. クアッド コア PC を使用している場合は、8 つのスレッドを同時に実行できます。
これは、ハードウェアと OS の両方に依存します。スレッドよりもコア数が少ない場合、OS はそれらのスレッドをインターリーブする可能性があります。つまり、そのうちの 1 つが IO 操作などを実行するたびに、またはタイム スライスが終了するたびに別のスレッドに切り替えられます。
また、すべてのコアが 1 つの実行スレッドを実行します。それがマルチコアの目的です。これは通常、タイム スライス動作と混合されます。