• 締切済み

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

Rubyで書かれたプログラムに、WinAPIを組み込みたいと思っています。 組み込む内容は、  「とある実行ファイル」に、割り当てられているCPUの数を1つにする事で、 APIに関しては、 -------------------------------------------------------- DWORD SetThreadIdealProcessor( HANDLE hThread, // スレッドのハンドル DWORD dwIdealProcessor // 理想的なプロセッサ番号 ); -------------------------------------------------------- これを組み込めば良いという事がわかりました。 しかし、分からない点が2箇所ありまして、  ・「スレッドのハンドル」  ・Rubyプログラムへの組み込み方 です。 どなたか、お分かりの方がいらっしゃいましたら、 ご教示お願いいたします。

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

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

Ruby_nami
質問者

補足

ありがとうございます! 情けない話なのですが、色々と試したのですが、 rubyのソースの見方が分かりませんでした・・・。 初期化コードというのは、 initializeメソッドを使って、 プログラムの機能を初期化するあれの事で良いのでしょうか。 初心者質問で申し訳ありません。