splauncher

Pocket

ハイパースレッド、マルチコア、SMPで動かない問題については、splauncherがうまく回避してくれます。中では、SetProcessAffinityMaskを使用してプロセッサを限定してプロセスを実行する、ということをやっています。
SetThreadAffinityMaskを使うと同様のことがスレッドでもできるそうです。似たものにSetThreadIdealProcessorというのがあって、こちらは強制じゃなくてできるだけ1つのプロセッサでということらしい。
Linuxでも、Linux 2.5.8以降sched_setaffinity, sched_getaffinityが導入され、glibc 2.3以降で利用可能になっているそうです。
マルチコアだと、パフォーマンスカウンタがプロセッサごとに違うという記述も見つけた。これもいずれ問題になるかも。すでにメーリングリストでは話題になっているけど。
実際の使用例を見ていると、プロセスのプライオリティをREALTIME_PRIORITY_CLASS、スレッドのプライオリティをTHREAD_PRIORITY_TIME_CRITICALにしてQueryPerformanceCounterしている。こういうものなのか。
http://www.flipcode.com/cgi-bin/fcarticles.cgi?show=64089

Pocket

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください