gpt4 book ai didi

winapi - 设置 EnterCriticalSection 超时

转载 作者:行者123 更新时间:2023-12-05 07:48:55 25 4
gpt4 key购买 nike

有没有办法在 EnterCriticalSection() 上设置超时?有 TryEnterCriticalSection(),但这需要我旋转或使用 Sleep()

最佳答案

没有办法对临界区进行定时等待。默认情况下,它的超时时间非常长,而且它是一种调试工具,不适合正常使用。

正如@Remy Lebeau 提到的,您需要使用支持超时的可等待锁。

Mutex 或 Event 对象就是这样的锁,但它们是内核对象,并且没有快速的用户模式路径,就像 Critical Section 那样。

如果您需要使用快速用户模式路径和超时来替换关键部分,您必须创建自己的工具或使用库工具——Windows API 中没有现成的原语。

你可以用SRWLOCKCONDITION_VARIABLE(等待条件变量支持超时),用WaitOnAddress(它支持超时)创建它, 或者在事件和原子变量之外(提到的最困难的方法,但在 Windows XP 中它是唯一可行的方法)。

库外解决方案,如果您使用的是 C++,请考虑标准库中的 timed_mutexrecursive_timed_mutex

关于winapi - 设置 EnterCriticalSection 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37952480/

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