Win32 提供了一系列的API 函数来完成线程的创建、挂起、恢复、终结以及通信等工作。
1 创建新的线程,返回已建线程的句柄:
HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId);
参数常规配置:(NULL,0,线程函数名,线程函数参数,创建时的状态)
2 挂起指定线程
DWORD SuspendThread(HANDLE hThread);
3 结束线程的挂起状态,执行线程
DWORD ResumeThread(HANDLE hThread);
4 结束线程(线程内结束)
VOID ExitThread(DWORD dwExitCode);
5 结束线程(线程外结束)
BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode);
dwExitCode:线程的退出码
使用TerminateThread()终止某个线程的执行是不安全的,可能会引起系统不稳定;该函数立即终止线程的执行,但并不释放线程所占用的资源。因此,一般不建议使用该函数。
6 将消息加入指定线程的消息队列(不等到消息返回)
BOOL PostThreadMessage(DWORD idThread,
UINT Msg,
WPARAM wParam,
LPARAM lParam);
调用该函数时,如果即将接收消息的线程没有创建消息循环,则该函数执行失败。