例如 C++0x接口

我很难弄清楚何时使用这些东西(cv、互斥锁和锁)。任何人都可以解释或指出资源吗?

提前致谢。

有帮助吗?

解决方案

在你指的是页面,“互斥”是实际的低级别的同步原语。你可以把一个互斥体,然后松开,只有一个线程可以把它在任何一个时间(因此它是一个同步原语)。递归互斥是一个可以采取由相同螺纹多次,并且然后它需要由同一个线程被释放多次其他人可以把它之前。

一个“锁定”在这里仅仅是一个C ++包装类,在析构函数需要互斥在其构造和释放它。它是用于建立用于C ++作用域同步是有用的。

一个状态变量是同步原语的一个更先进/高级别形式相结合的锁定用“信令”机制。当线程需要等待资源可用时使用。一个线程可以在CV“等待”,然后资源生产者可以“信号”的变量,在这种情况下,谁等待CV线程得到通知,可以继续执行。互斥与CV相结合,避免在一个线程开始等待另一个线程需要告知它的同时CV的竞争条件;然后它是不可控的信号是否被传递或丢失。

其他提示

我对 C++0x 不太熟悉,所以对这个答案持保留态度。

关于:互斥体对比锁:从您发布的文档来看,它看起来像 mutex 是一个代表操作系统互斥体的对象,而 lock 是一个持有互斥锁的对象,以方便 RAII模式.

条件变量是一种方便的机制,可将阻塞/信号机制(信号+等待)与互斥机制关联起来,同时使它们在操作系统中保持解耦,以便系统程序员可以选择 condvar 和互斥体之间的关联。(对于处理多组并发访问的对象很有用)Rob Krten 有一些 关于 condvars 的很好的解释 在他的在线章节之一中 关于 QNX 的书.

就一般参考而言: 这本书 (还没出来)看起来很有趣。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top