複数のプロセスの使用

マルチスレッド・ライブラリーは、複数のプロセスを処理するルーチンをいくつか提供します。アプリケーションは、固有なアドレス領域と固有なリソースを必要とする関数を他のスレッドの処理から保護するために複数のプロセスを使用することができます。ただし、次のような理由から、通常は複数のプロセスを作成するよりも、1 つのプロセスに複数のスレッドを作成することでマルチタスクを実装するほうが効率的です。

現在のプロセスと並行して実行される独立したプロセスを作成する場合、CreateProcess を使用します。CreateProcess は、そのプロセスが終了するまで有効な 32 ビットのプロセス識別子を返します。ExitProcess はプロセスを停止し、すべての DLL に対してプロセスが終了することを通知します。

複数のプロセスから Mutex、イベント、およびセマフォーを共有することができます (ただしクリティカル・セクションは共有できません)。オプションとして、プロセスを作成したプロセスからハンドルを継承することができます (オンラインヘルプの CreateProcess を参照してください)。

現在のプロセスに関する情報は、GetCurrentProcess (プロセス自身の疑似ハンドルを返す) および GetCurrentProcessId (プロセス識別子を返す) を呼び出すことで取得できます。これらの関数によって返された値は、他のプロセスと通信するための呼び出しに使用できます。GetExitCodeProcess は、プロセスの終了コードまたは実行中であることを示す値を返します。

OpenProcess 関数は、プロセス識別子で指定されたプロセスへのハンドルを開きます。OpenProcess では、ハンドルのアクセス権と継承性を指定することができます。

プロセスは次のいずれかが起こったときに終了します。

ExitProcess を使用してプロセスを終了する方法を推奨します。この方法は、添付されているすべての DLL に対して終了することを通知し、プロセスのすべてのスレッドを確実に終了します。TerminateProcess を呼び出した場合、DLL に対する通知は行われません。