gpt4 book ai didi

c++ - 尝试进入关键部分

转载 作者:可可西里 更新时间:2023-11-01 14:44:22 29 4
gpt4 key购买 nike

我不确定我是否理解正确。 TryEnterCriticalSection 只被调用一次,它不像EnterCriticalSection 那样粘?例如。如果我写类似的东西

if(TryEnterCriticalSection (&cs))
{
//do something that must be synh
LeaveCriticalSection(&cs);
}
else
{
//do other job
}
//go on

并且如果 TryEnterCriticalSection 返回 false 部分 do something that must be synh 将永远不会完成,并且 do other job 部分将被执行然后继续

最佳答案

TryEnterCriticalSection() 执行以下操作:

  • 尝试进入临界区
  • 如果该部分当前被其他线程获取,则该部分不进入并且函数返回零,否则
  • 输入该部分且函数返回非零值

无论如何,函数永远不会阻塞。将其与 EnterCriticalSection() 进行比较,如果没有其他线程进入临界区,则失败,如果存在此类其他线程,则阻塞。

因此您的代码的结果将取决于调用函数时是否有另一个线程进入临界区。每次 TryEnterCriticalSection() 返回非零值(成功)时,不要忘记调用 LeaveCriticalSection()

是的,您的代码是根据正确的假设编写的。

关于c++ - 尝试进入关键部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6829592/

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