【发布时间】:2014-04-23 23:29:23
【问题描述】:
所以我正在为 USB HID 设备设计一个新的软件界面,我有一个关于并发保护的问题。我假设我必须在对 ReadFile 和 WriteFile 的调用周围添加并发保护(如果错误,请纠正我),因为它们可能是从我设计中的不同线程调用的。
过去我有时使用静态布尔值来实现线程安全,添加一个等待 1 毫秒的循环,直到布尔值表明代码可以安全输入。我也使用过关键部分。谁能告诉我 CriticalSections 从根本上是否比使用静态布尔值更好。我知道我不必编写等待循环,但是他们在 VC++ 中使用什么轮询率来检查锁的状态?他们是否以某种使他们变得更好的方式与操作系统挂钩?使用布尔值进行并发检查并不总是安全的吗?等等
【问题讨论】:
-
C++11 向标准库添加了线程支持,您应该考虑使用 std::mutex 之类的东西
-
不,互斥锁太贵了。 CriticalSections 应该这样做。我会在标准库中寻找它们。
-
我看到std::mutex不一定是windows mutex,但可以实现为CS。
标签: visual-c++ concurrency critical-section