1

私は並列処理が必要なモジュールに取り組んでいる C++ の初心者です。

すべてのプロセスを作成した後すぐにメインが終了し、作成された新しいプロセス彼らが終わるまで続けます。

スレッドを試したとき、メインが終了するとすぐに、すべての子が殺されなければ、メインはすべてのスレッドが完了するまで待機する必要があります。しかし、複数の DLL に存在する多くの主要なメソッドがあるため、このアプローチは必要ありません。すべての DLL で各メインを呼び出す必要があり、それらのメインは必要な数のプロセスを作成します。

次の構文を持つCreateProcess関数を見てみました。

BOOL WINAPI CreateProcess(
  _In_opt_     LPCTSTR lpApplicationName,
  _Inout_opt_  LPTSTR lpCommandLine,
  _In_opt_     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  _In_opt_     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  _In_         BOOL bInheritHandles,
  _In_         DWORD dwCreationFlags,
  _In_opt_     LPVOID lpEnvironment,
  _In_opt_     LPCTSTR lpCurrentDirectory,
  _In_         LPSTARTUPINFO lpStartupInfo,
  _Out_        LPPROCESS_INFORMATION lpProcessInformation
);

それに基づいて、プロセスに渡す関数を最初に話していることは、別のコンソールアプリケーション (例: exe) として作成し、ここで使用する必要があることを理解しました。

私の理解は正しいですか?または、互いに独立している別のプロセスで関数を実際に呼び出す他の方法はありますか?

さらに情報が必要な場合はお知らせください

4

2 に答える 2

1

はい、あなたはそれを正しく理解しました。CreateProcess() を使用すると、実際にはメインとは関係のないプロセスが作成されます。また、互いに完全に独立した単一のプログラムから複数のプロセスを作成することもできます。

互いに独立した別のプロセスで関数を呼び出す必要はありません。

于 2012-10-26T06:27:08.667 に答える
0

通常、スレッドを使用して問題を解決し、スレッドが終了するのを待ってからメイン関数を終了します。スレッドが終了するのを待つことができます。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025%28v=vs.85%29.aspx

于 2012-10-26T05:38:13.990 に答える