- 締切済み
Rubyで書かれたプログラムに、WinAPIを組み込みたいと思っていま
Rubyで書かれたプログラムに、WinAPIを組み込みたいと思っています。 組み込む内容は、 「とある実行ファイル」に、割り当てられているCPUの数を1つにする事で、 APIに関しては、 -------------------------------------------------------- DWORD SetThreadIdealProcessor( HANDLE hThread, // スレッドのハンドル DWORD dwIdealProcessor // 理想的なプロセッサ番号 ); -------------------------------------------------------- これを組み込めば良いという事がわかりました。 しかし、分からない点が2箇所ありまして、 ・「スレッドのハンドル」 ・Rubyプログラムへの組み込み方 です。 どなたか、お分かりの方がいらっしゃいましたら、 ご教示お願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- osamuy
- ベストアンサー率42% (1231/2878)
回答No.1
ruby-mswin32だと、rubyのソースにGetCurrentThreadId()ってのがあるみたいなので、それを使って、rubyの初期化コードにSetThreadIdealProcessor()を直書きしちゃえば良いのでは。 ただ、Ruby自体(1.9まで)は基本シングルスレッドで動作しているのだから、わざわざCPUを絞る必要はないだろうし、マルチスレッドが有害ならむしろRuby側スクリプトを書き換えるほうが良いように思えます。 あるいは、コマンドStartのオプション/affinityを指定してrubyを起動するとか。
補足
ありがとうございます! 情けない話なのですが、色々と試したのですが、 rubyのソースの見方が分かりませんでした・・・。 初期化コードというのは、 initializeメソッドを使って、 プログラムの機能を初期化するあれの事で良いのでしょうか。 初心者質問で申し訳ありません。