Windows多线程-互斥器Muetex用法总结以及如何避免死锁

本文介绍了Windows下互斥器Mutex的创建、锁定、释放以及系统如何处理被舍弃的Mutex,强调了Mutex在防止死锁和线程同步中的作用,并通过实例展示了设置等待时间如何避免死锁问题。
摘要由CSDN通过智能技术生成

Muetex()
Muetex()是一个核心对象,所以其可用WaitForSingleObgect()来检查其是否为激发状态,若互斥器没信号,则等待其成为激发态,然后WaitForSingleObject()。一旦没有任何线程拥有 mutex,这个 mutex 便处于激发状态。因此,如果没有任何线程拥有那个 mutex, Wait…() 便会成功返回,等待中的线程便可继续下一步。同一时间,只能有一个线程占有互斥器,直到拥有互斥器的进程将其释放,这就起到了线程同步的作用。

先介绍用于线程同步的互斥器的用法:
一:产生一个互斥器
函数原型:
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,
BOOL bInitialOwner,
LPCTSTR lpName
);
例:
HANDLE HM=CreateMutex(NULL,FALSE,NULL);

二:锁住一个互斥器
互斥器是核心对象,所以只需要WaitForSingleObject()等待指定互斥器成为激发态时返回,该互斥器就会变成非激发态,其他等待的线程将处于等待状态,直到线程将互斥器释放,互斥器就又变成激发态,交由下一个线程使用。

三:释放互斥器
函数原型:
BOOL ReleaseMutex(
HANDLE hMutex
);
例: ReleaseMuetex(HM);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值