1

重複の可能性:
異なるCPUコアでスレッドを生成するにはどうすればよいですか?

私はC#を使用しています。スレッドの概念を使ってプログラムを書きたいです。さまざまなプロセッサでスレッドを実行する方法を知りたいだけです。ここに部分的なコードを添付します。

Thread t1 = new Thread(threadJobA);
Thread t2 = new Thread(threadJobB);
t1.Start();
t2.Start();
4

3 に答える 3

5

私のコメントで言ったように、簡単な答えは「心配しないでください」です。あなたがこの質問をしなければならないなら、それはあなたが提唱するどんな量の努力の価値もないことは間違いありません。

とは言うものの、これを実際に行う方法は、スレッドの実行を許可する論理プロセッサを制御する「スレッドアフィニティマスク」を設定することです。CLRスレッドでこれを実行できるかどうかはわかりません(爆発して世界が終了する可能性があります)。ただし、を使用して作成された単純な古いスレッドがある場合は、をCreateThread使用してアフィニティマスクを設定できますSetThreadAffinityMask

しかし、本当に。これをしないでください。

于 2012-10-11T05:27:15.087 に答える
0

なぜプロセッサに電話をかけたいのですか?その背後にある理由は何ですか?

ジョブ/タスクをプロセッサに委任するという純粋なOSの責任。これは、実行中のすべてのプロセス/タスクの実行時間を管理するためのものです。クアッドコアプロセッサを使用している場合でも、すべてのプロセッサに常に同じ負荷がかかる必要はありません。OSは、実行中のプロセス間で利用可能なリソースを共有するためにPCBを管理しています。

TPLは、コードを並列に実行するのに適しています。TPLを適切に適用すると、パフォーマンスが向上します。

于 2012-10-11T05:56:09.687 に答える
-1

タスク並列ライブラリを使用するだけで、スレッドをCPUコアに委任するのに最適です。

異なるプロセッサでスレッドを実行したい場合は、「AppDomain」の境界を越えることになります。

于 2012-10-11T05:07:47.547 に答える