分类: C/C++
2014-08-05 08:12:13
可以先调用OpenMutex方法,查看互斥量创建没有,如果创建了就会返回共有的句柄了,如果没创建,那你调用CreateMutex来创建
你现在Mutex在谁手里,只有owner能够Release
多个进程不同时刻是可以支配同一个mutex的。这里的关键是锁的所有者owner要说清楚:所有者不一定是创建者CreateMutex,而是加锁的进程,什么是加锁的进程?谁waitfor了,谁就加锁,就是该mutex当前的owner,必须由该进程Release。其它进程才能waitfor。关键是每个mutex个实例(object)中有一个数据成员,会记录它的owner。
A进程CreateMutex设置第2个BOOLbInitialOwner, // 初始化互斥对象的所有者,则A相当于加锁,是该mutex当前的owner,释放后,其它进程才可以waitfor。如果CreateMutex第2个参数是false,则任何进程都可以waitfor,并立即成为该mutex的owner。
另外,一个进程如果是某mutex的owner,可以连续多次waitfor该锁,object中有一个成员计数。要注意的是,一次Release是解不开n次加锁的,可能会造成调试中的困扰。
所以呢,网友们的解释总是很模糊,可以是没有实际编程经历,或者是表达能力有问题。