アプリ版:「スタンプのみでお礼する」機能のリリースについて

マルチコアを有効に利用するプログラムを作りたいと考えています。
マルチコア、マルチスレッドが、よく理解できていないところもありますが、ご容赦お願いいたします。
OSはWindows XP、開発環境はVisual C++ 6.0です。

1.マルチスレッド対応すれば、マルチコアを有効利用できるのでしょうか?(複数のコアの使用率を均等に上手く割り振ってくれるのでしょうか)
2.Windows APIにSetThreadAffinityMask()、SetThreadIdealProcessor()なるAPIがあるのですが、これらを使用しないと、割り振れないものなのでしょうか?
3.少し調べたのですが、OpenMP、MPIなる技術があるようなのですが、このような特殊な処理を加えないとダメなのでしょうか。

個人的には、マルチスレッド対応さえすれば、あとはOS(Windows)が上手くやってくれれば、、、と思っているのですが。

A 回答 (2件)

スレッドハンドルをSetThreadIdealProcessor APIに渡してください。


スチームなどではシングルコア時代のゲームがWindows Vista/7/8対応で再販されてますが、近代のマルチコア対応ゲームと比較すると全コアを活かしきれていないです。
    • good
    • 0

1)


各スレッドの処理量が均等になるように割り振れれば、後はOSに任せてもそれなりにうまくやってくれます。

2)
別に使わなくてもOSが適当に割り振りますが、スレッドごとに処理量が大きく異なる等で割り振りかたを制御したいときに使います。

3)
MPIはスレッドレベルというよりプロセスレベルで並列化させるときに使う技術です。スレッドレベルでの並列化の場合は必要ありません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!