线程函数(静态,全局)
DOWRD
WINAPI
Thread(LPVOID lp)
{
return 0;
}
创建线程
HANDLE handle=
CreateThread(NULL,0,Thread,lp,NULL,NULL);
着重第三个,第四个参数:线程函数地址,传入线程的参数
第六个参数为返回的线程ID,LPDWORD类型
Thread函数DWORD WINAPI thread(LPVOID lp);
HANDLE handle=
(HANDLE)_beginthreadex(NULL,0,Thread,lp,0,NULL);
_beginthreadex()函数会给线程分配一个独立的内存区域,用来存储每个线程自己的数据,保证同一个函数不同线程不会产生数据冲突
建议是用_beginthreadex函数来创建线程
Thread函数unsigned __stdcall thread(LPVOID lp);
头文件:#include<process.h>
线程挂起、恢复
SuspendThread(HANDLE)
ResumeThread(HANDLE)
可嵌套使用,挂起N次(SuspendThread)同时需要恢复N次(ResumeThread)
信号量
创建信号量:HANDLE semaphore=
CreateSemphore(NULL,curCount,MaxCount,NAME);
参数1:描述符,默认NULL
参数2:信号量初始数量
参数3:信号量的最大值
参数4:信号量名称
释放信号量:
BOOL
ReleaseSemaphore(HANDLE,count,&preCount);
参数1:信号量句柄
参数2:释放信号量的数量
参数3:释放前该信号量的数量
等待信号量:
DWORD WaitForSingleObject(HANDLE,time);
参数1:信号量句柄
参数2:等待时间(ms):INFINED-无限等待,等到信号量后继续执行;0-立即返回
返回:WAIT_OBJECT_0,正常返回;WAIT_TIMEOUT,超时;其他
DWORD WaitForMultipleObjects(count,HANDLE[],waitAll,time);
参数1:信号量句柄数量
参数2:信号量句柄数组
参数3:TRUE-等待信号量全部激发,FALSE-等待任一信号量激发
参数4:等待时间:INFINED-无限等待