gpt4 book ai didi

C++\Win32 对 WaitForSingleObject 函数返回值含义感到困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:54:33 25 4
gpt4 key购买 nike

我有一个使用 CreateMutex 创建的互斥量,然后我使用 WaitForSingleObject 在某个线程上等待,直到互斥量被释放并获得它的所有权(使用没有超时)。

因此,如果函数返回 WAIT_OBJECT_0,我可以继续执行线程的代码。

但是,如果函数返回 WAIT_ABANDONED,我是否仍然可以执行代码,期望在我的 Mutex 上调用 WaitForSingleObject 的任何其他线程会卡住,直到我释放?


如果拥有线程在没有释放 Mutex 的情况下终止,我希望调用线程获得所有权并且一切照常进行。


编辑:令我感到困惑的是,MSDN 表示情况 (2) 中互斥锁的状态是未发出信号的,这与发出信号的状态 (1) 相反。这对我意味着什么?

最佳答案

如果您返回 WAIT_ABANDONED,则意味着您已获得互斥体的所有权。问题是您不知道受其保护的资源的状态。

例如,假设线程 X 获得一个互斥量并开始操纵受该互斥量保护的对象的状态,然后被杀死。状态未知,互斥量未保留。当你去等待那个互斥体时,你会收到它,但你不会知道那个状态。

关于C++\Win32 对 WaitForSingleObject 函数返回值含义感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11889117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com