上記の質問について説明します。2 つのスレッドがあり、それぞれが x ミリ秒かかる同じアクションを実行します。コアが 1 つのコンピューターを使用している場合、2 つのアクションを実行するのに約 2 倍のミリ秒かかりますか?
質問する
60 次
3 に答える
2
アクションがCPU-boundである場合、基本的には計算のみで構成されていることを意味し、コンテキスト切り替えのオーバーヘッドにより、総経過時間は 1 つのスレッドにかかる時間の 2 倍強になります。
アクションに無視できないIO 関連の操作(メモリ、ディスク、またはネットワークからの読み取り) が含まれる場合、単一のコアで 2 つのスレッドを実行すると、1 つのスレッドで必要な時間よりも少し長くかかることがありますが、必ずしもその 2 倍の時間であるとは限りません。OS が1 つのスレッドに IO を実行させ、もう 1 つのスレッドに計算を実行させ、交互に実行させることができる場合、両方のスレッドを 1 つのスレッドと同じ壁時間で実行することができます。
于 2013-11-12T19:56:24.060 に答える