二、Windows多线程编程之创建线程
注意事项:
(1) 如果有共享变量,则一定要声明为volatile类型,比如多线程并发的控制变量
(2) 声明生成线程后的线程句柄HANDLE hThread和所创建线程的生成的线程id DWORD ThreadId
(3) 编写线程函数 ThreadFunc(…)
hThread=CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)ThreadFunc,
NULL,
0,
&ThreadID);
函数原型为HANDLE CreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId);
该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄,其中各参数说明如下:
- lpThreadAttributes:指向一个SECURITY_ATTRIBUTES 结构的指针,该结构决定了线程的安全属性,一般置为 NULL;
- dwStackSize:指定了线程的堆栈深度,一般都设置为0;
- lpStartAddress:表示新线程开始执行时代码所在函数的地址,即线程的起始地址。一般情况为(LPTHREAD_START_ROUTINE)ThreadFunc,ThreadFunc 是线程函数名;
- lpParameter:指定了线程执行时传送给线程的32位参数,即线程函数的参数;
- dwCreationFlags:控制线程创建的附加标志,可以取两种值。如果该参数为0,线程在被创建后就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统产生线程后,该线程处于挂起状态,并不马上执行,直至函数ResumeThread被调用;
- lpThreadId:该参数返回所创建线程的ID;
如果创建成功则返回线程的句柄,否则返回NULL。