CreateProcess函数创建了线程,每个进程至少有一个主线程,这个线程从入口地址main开始执行,直到return语句返回,主线程结束,进程从内存中卸载。
主线程可在运行过程中创建新的线程,即多线程。同一进程中的多线程的好处是这些线程可以共享进程的资源,如全局变量、句柄。当然各线程也可以用自己的私有堆栈保存私有数据。
要在主线程中创建一个辅助线程,必须为该辅助线程指定一个入口点函数,这个函数称为线程函数。线程函数定义如下
DWORD WINAPI ThreadProc(LPVOID lpParam); //线程函数名称ThreadProc可以自定义
/////////////////////////////////////////////////////////////// // ThreadDemo.cpp文件 #include <stdio.h> #include <windows.h> // 线程函数 DWORD WINAPI ThreadProc(LPVOID lpParam) { int i = 0; while(i < 20) { printf(" I am from a thread, count = %d \n", i++); } return 0; } int main(int argc, char* argv[]) { HANDLE hThread; DWORD dwThreadId; // 创建一个线程 hThread = ::CreateThread ( NULL, // 默认安全属性 NULL, // 默认堆栈大小 ThreadProc, // 线程入口地址(执行线程的函数) NULL, // 传给函数的参数 0, // 指定线程立即运行 &dwThreadId); // 返回线程的ID号 printf(" Now another thread has been created. ID = %d \n", dwThreadId); // 等待新线程运行结束 ::WaitForSingleObject (hThread, INFINITE); ::CloseHandle (hThread); return 0; }