1

我是 C++ 的新手,正在开发一个需要并行处理的模块。

我需要通过将不同的函数(执行某些特定任务)传递给从 C++ 中的 main (类似于_beginthread)创建的每个进程来创建 2 或 3 个进程,其中 main 应该在创建所有进程后立即退出,并且创建的新进程将继续,直到他们完成。

当我尝试使用线程时,我的主线程应该等到我的所有线程都完成,如果不是我的主线程退出,我所有的孩子都会被杀死。但我不想要这种方法,因为多个 DLL 中存在许多主要方法。我需要调用每个 DLL 中的每个 main,这些 main(s) 将负责创建所需数量的进程。

我尝试查看具有以下语法的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() 时,它实际上创建了一个与 main 无关的进程。您还可以从一个完全独立的程序创建多个进程。

无需在彼此独立的单独进程中调用函数。

于 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 回答