【问题标题】:WinAPI timed mutex lockWinAPI 定时互斥锁
【发布时间】:2011-01-19 07:19:37
【问题描述】:

如何将互斥锁(临界区)锁定一段时间?是否有任何API功能?据我所知,Windows 中没有类似的东西。如果可以,是否可以手动实现?

谢谢。

【问题讨论】:

  • 您为什么要这样做?您应该始终努力在尽可能短的时间内锁定互斥锁(否则您会不必要地阻塞其他线程)。除此之外,在你完成之前解锁互斥锁会导致可怕的数据损坏。
  • 我说的是互斥锁超时。实际上,我对 windows 的 pthread_mutex_timedlock 的类似物很感兴趣。
  • 如果你阻塞了一个永远不可用且超时的互斥锁,为什么不直接使用 Sleep()?
  • 仅仅因为你无法想象某人做某事的理由,并不意味着没有充分的理由去做。存在 posix 函数 pthread_mutex_timedlock() 的事实意味着有人认为值得构建到 pthreads 库中。而且windows也有实现,所以一定有什么。

标签: c++ winapi mutex critical-section timed


【解决方案1】:

Win32 中pthread_mutex_timedlock() 的等效项是使用Mutex 并在wait-functions 之一中指定超时(INFINITE 除外)。

【讨论】:

  • 谢谢,看来这是我正在寻找的解决方案。让我检查一下然后回来。
  • 我相信这描述了一个过于复杂的 Sleep() 调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2012-12-25
  • 2021-12-23
相关资源
最近更新 更多