0
点赞
收藏
分享

微信扫一扫

多线程-6

线程的ID和互斥对象计数器
void main()
{

HANDLE hThread1;//线程的句柄

HANDLE hThread2;

hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);

hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);

CloseHandle(hThread1);//关闭句柄,并没有终止线程,表示主线程中对该句柄不感兴趣。

//当关闭句柄的时候,会递减新线程的线程内核对象的使用计数,

//线程执行完毕后,也会递减使用计数

//当使用计数为0时,系统会释放线程内核对象

CloseHandle(hThread2);

hMutex=CreateMutex(NULL,FALSE,NULL);//创建一个匿名的互斥对象.False 没有线程拥有该互斥对象,


WaitForSingleObject(hMutex,INFINITE);//同一个mian主线程中,hMutex又加1,变成了2
ReleaseMutex(hMutex);
ReleaseMutex(hMutex);//得释放两次,才能使hMutex的ID变成0,才能使“多线程-5”中的两个线程请求到互斥对象
Sleep(4000);//主线程放弃执行权力,进入等待状态

}

举报

相关推荐

0 条评论