アプリケーションのプロセッサ関係を設定する

By: Chikako Yonezawa

Abstract: マルチプロセッサマシン上で、どのプロセッサでアプリケーションを動作させるかをコントロールする方法について説明します。

  Q:

マルチプロセッサマシンで、1つのプロセッサだけ使用して動作するようなアプリケーションを作成する方法はありますか ?

  A:

はい。ここにプロセッサ関係を設定できる2つの方法があります。

1つは、アプリケーションが動作している間、タスクマネージャーを起動し、「プロセス」タブをクリックします。表示されたプロセスの一覧の中の目的のプロセス上で、マウスの右ボタンをクリックし、「関係の設定」を選択します。プロセッサの関係のダイアログが表示されますので、CPU0またはCPU1のいずれかのチェックを外します。

もう1つは、プログラムコードで指定する方法です。以下は、プロセッサ関係の設定と取得についての例です。

procedure TForm1.Button1Click(Sender: TObject);
var
  vHandle : Cardinal;
  vMaskProcess, vMaskSystem : cardinal;
begin
  vHandle := Form1.Handle;
  SetProcessAffinityMask(vHandle, 0);  // or 1
  GetProcessAffinityMask(vHandle, vMaskProcess, vMaskSystem);
  showmessage(inttostr(vMaskProcess));
  showmessage(inttostr(vMaskSystem));
end;



Server Response from: SC3