【发布时间】: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