2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
40 / 376 ツリー ←次へ | 前へ→

【1784】SetThreadAffinityMask() の実装について Mc.N 05/9/17(土) 16:21

【1791】Re:SetThreadAffinityMask() の実装について Mc.N 05/9/19(月) 13:29
【2194】Re:SetThreadAffinityMask() の実装について ひよひよ 07/7/27(金) 0:12
【2195】Re:SetThreadAffinityMask() の実装について ひよひよ 07/7/27(金) 0:16

【1791】Re:SetThreadAffinityMask() の実装につい...
←back ↑menu ↑top forward→
 Mc.N  - 05/9/19(月) 13:29 -

引用なし
パスワード
   Mc.N です。

>>2. SetProcessAffinityMask()/GetProcessAffinityMask() を使用しない理由について
>>何か理由があって SetProcessAffinityMask() を使用していないのであれば理由を教えていただけないでしょうか。
>
>特定プロセッサ・リソース(TSC/MSR etc)の取得/変更が主目的と思われますので、どちらを
>使っても大差無いと思いますが...
>逆にSetProcessAffinityMask()/GetProcessAffinityMask()を使った場合の利点はなんでしょうか?

GetProcessAffinityMask() で今使用しているプロセッサを確認できるのが利点です。Get''Thread''AffinityMask()なる関数が存在しているなら特に疑問視しなかったのですが、どうもそのような関数は存在しないようです。

今の所、順序良く dwThreadAffinityMask の mask が並んでいるっぽいですが、今後も mask が順序良く並んでくれるという保証はないと感じています。多分、Hotplug 出来るような CPU を想定してのことだとは思うのですが。

で、手元で動作確認した感じだと SetProcessAffinityMask() も SetThreadAffinityMask() も目的は果たしているのは確認しました。となると Get の無い SetThreadAffinityMask() を使用する理由が分からなかったのです。

きっと技術的に問題があるからに違いない、と。
その後のコメントを見る限り、特に大きな理由は無さそうだったので納得しました。

【2194】Re:SetThreadAffinityMask() の実装につい...
←back ↑menu ↑top forward→
 ひよひよ  - 07/7/27(金) 0:12 -

引用なし
パスワード
   すんごい今更ですけど、

この場合
SetProcessAffinityMask
を使うことが必須ですね。

というのも、SetThreadAffinityMask では、プロセス自体が実行可能プロセッサを制限されている場合意図したようには動作しないためです。

CrystalCPUID の最新版ソースコードを確認したところ、RealTimeClock の部分だけ何故か SetThreadAffinityMask になってました。直しておこう。。。

【2195】Re:SetThreadAffinityMask() の実装につい...
←back ↑menu ↑top forward→
 ひよひよ  - 07/7/27(金) 0:16 -

引用なし
パスワード
   ▼ひよひよさん:
>CrystalCPUID の最新版ソースコードを確認したところ、RealTimeClock の部分だけ何故か SetThreadAffinityMask になってました。直しておこう。。。
と思ったけれど、RealTimeClockDlg で SetProcessAffinityMask を実行してしまうと、倍率変更機能など他の機能に悪影響を与えてしまう可能性が。

マルチスレッドだとホントこの辺超危険なことが起こりそうです。
CrystalCPUID 5.1 は色々分離しとこうっと。

40 / 376 ツリー ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
ページ:  ┃  記事番号:   
54561
(SS)C-BOARD v3.8(とほほ改ver2.1) is Free