1

thread用語とcore、およびそれらが自宅のコンピューターで作成および実行するプログラムとどのように関連しているかについて、概念的に混乱しています。私のマシンで次のプログラムを実行しているとしましょう。これは、 4つのスレッドを持つクアッドコアマザーボードです。

#include <iostream>

using namespace std;

int main()
{
    int long long num = 1E15;
    while(num--)
    {
        cout << num << endl;
    }
    return 0;
}

このプログラムで複数のコアを利用したい場合、プログラムはマルチスレッドをサポートする必要がありますか、それとも並列化する必要がありますか?または、私のCPUにはコアごとに1つのスレッドがあるので、私の場合も同じですか?

4

2 に答える 2

6

コアはハードウェアの概念です。大まか に言えば、CPUにnコアがあると言うとき、それnは同時に物事を行うことができることを意味します。

スレッドはソフトウェアの概念です。これは、オペレーティングシステムスケジューラによって独立して管理できる一連の命令を指します。通常、プロセスは1つ以上のスレッドで構成されますが、一部のオペレーティングシステムでは、プロセスとスレッドの区別が多少あいまいになります。

ある時点で、コアはアイドル状態であるか、スレッドを実行しています。

現在、例には単一のスレッドがあります。したがって、複数のコアを使用することはできません。複数のコアを使用するには、複数のスレッドまたは複数のプロセスを導入する必要があります。これは、プログラムの並列化として説明できますが、複数のスレッド/プロセスを使用することがプログラムを並列化する唯一の方法ではないことに注意してください。

于 2013-03-27T10:12:47.757 に答える
1

通常、OSはCPUの複数のコアを使用するようmultithreading強制されます。しかし、これは常にOSに依存します。OSのスケジューラーは、そのポリシーに従ってスレッドを配布する責任があります。

于 2013-03-27T10:06:09.803 に答える