Microsoft 文档没有说明如果我ReleaseMutex()
在互斥锁已解锁时错误地调用会发生什么。
细节:
我正在尝试在无法访问编译器的情况下修复一些 Windows 代码。
我意识到 WinApi 互斥锁都是递归的,并且是引用计数的。如果我正在使用该功能,很明显额外的ReleaseMutex()
调用会过早地减少引用计数器。
但是,我正在查看的代码不会递归地使用互斥锁,因此引用计数永远不会高于“1”。它确实释放互斥锁的次数超过了必要的次数……那会发生什么?引用计数是否为负数?它是否保持为零(解锁)并且只返回一个可忽略的错误?
(当然,这段代码在调用这些函数时实际上并不检查错误!)