|
返事が遅くなりました。すいません。
> mask = (DWORD)SetThreadAffinityMask(GetCurrentThread(),1<<(i-1));
>が、正解ではないかと思います。
おっしゃるとおりです。
ソースを読み返して、どうしてこうなってるんだろ???
と自分でも思ったわけです。次回修正しておきます。
ビットマスクであることは理解していたのですが・・・。
CrystalMark の方はちゃんとなっていますし。
>>2. SetProcessAffinityMask()/GetProcessAffinityMask() を使用しない理由について
>>何か理由があって SetProcessAffinityMask() を使用していないのであれば理由を教えていただけないでしょうか。
>特定プロセッサ・リソース(TSC/MSR etc)の取得/変更が主目的と思われますので、どちらを
>使っても大差無いと思いますが...
そうですね。スレッドレベルで、同じプロセッサで実行されていれば十分なのでSetThreadAffinityMask() を使っています。SetProcessAffinityMask()と比較したオーバーヘッドについてはわかりませんが、必要な部分のみ制限するのがマルチスレッドプログラミングの基本だと思っていたのでそうしています。まぁ、間違っていた私が言っても説得力ありませんが。
ご報告&フォローありがとうございました。
なんにせよ次回更新時に修正させていただきます。
※最近宿題がたまってるなぁ〜二週間以上更新していないのは久しぶりです。。。
|
|