重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Rubyで書かれたプログラムに、WinAPIを組み込みたいと思っています。

組み込む内容は、
 「とある実行ファイル」に、割り当てられているCPUの数を1つにする事で、
APIに関しては、
--------------------------------------------------------
DWORD SetThreadIdealProcessor(

HANDLE hThread, // スレッドのハンドル

DWORD dwIdealProcessor // 理想的なプロセッサ番号

);

--------------------------------------------------------
これを組み込めば良いという事がわかりました。

しかし、分からない点が2箇所ありまして、

 ・「スレッドのハンドル」
 ・Rubyプログラムへの組み込み方

です。

どなたか、お分かりの方がいらっしゃいましたら、
ご教示お願いいたします。

A 回答 (1件)

ruby-mswin32だと、rubyのソースにGetCurrentThreadId()ってのがあるみたいなので、それを使って、rubyの初期化コードにSetThreadIdealProcessor()を直書きしちゃえば良いのでは。



ただ、Ruby自体(1.9まで)は基本シングルスレッドで動作しているのだから、わざわざCPUを絞る必要はないだろうし、マルチスレッドが有害ならむしろRuby側スクリプトを書き換えるほうが良いように思えます。
あるいは、コマンドStartのオプション/affinityを指定してrubyを起動するとか。

この回答への補足

ありがとうございます!
情けない話なのですが、色々と試したのですが、
rubyのソースの見方が分かりませんでした・・・。

初期化コードというのは、
initializeメソッドを使って、
プログラムの機能を初期化するあれの事で良いのでしょうか。

初心者質問で申し訳ありません。

補足日時:2010/05/03 13:22
    • good
    • 0

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