CreateProcess函数创建了进程,也创建了进程的主线程。一般情况下,应用程序使用主线程接受用户的输入,显示运行结果,而创建新的线程(辅助线程)来处理长时间的操作。每个线程必须拥有一个进入点函数,线程从进入点开始运行。主线程的进入点是main,如果想在进程中创建一个辅助线程,必须为该辅助线程指定一个进入点函数,这就是线程函数:
DWORD WINAPI ThreadProc(LPVOID lpParam); //参数的值由CreateThread函数的第四个参数指定
HANDLE CreateProcess(
LPSECURITY_ATTRIBUTES lpThreadAttributes, //线程的安全属性
DWORD dwStackSize, //指定线程堆栈的大小
LPTHREAD_START_ROUTINE lpStartAddress, //线程函数的起始地址
LPVOID lpParameter, //传递给线程函数的参数
DWORD dwCreationFlags, //指定创建线程后是否立即启动
DWORD *lpThreadId //获取内核给新线程分配的线程ID
);
此函数执行成功后,返回新线程的线程句柄。
WaitForSingleObject函数用于等待指定的对象变成受信状态(线程对象只有当线程运行结束后才达到受信状态0):
::WaitForSingleObject(
hHandle //要等待的对象的句柄
dwMilliseconds //要等待的时间
);
当有下列一种情况发生时函数就会返回:
1.要等待的对象变成受信状态
2.参数dwMilliseconds指定的时间已经过去