s********k 发帖数: 6180 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: silverhawk (silverhawk), 信区: JobHunting
标 题: 请教OS里面monitor 和conditional valuable的区别(linux,unix)
发信站: BBS 未名空间站 (Wed Jan 19 12:03:39 2011, 美东)
感觉monitor就是用conditional valuable和lock来实现,而conditional valuable实
现的时候也要和mutex一起用,哪位指点一下我哪里错了? |
w***g 发帖数: 5958 | 2 我其实一直也没搞明白monitor是干什么用的。哪个大牛给科普一下。
【在 s********k 的大作中提到】 : 【 以下文字转载自 JobHunting 讨论区 】 : 发信人: silverhawk (silverhawk), 信区: JobHunting : 标 题: 请教OS里面monitor 和conditional valuable的区别(linux,unix) : 发信站: BBS 未名空间站 (Wed Jan 19 12:03:39 2011, 美东) : 感觉monitor就是用conditional valuable和lock来实现,而conditional valuable实 : 现的时候也要和mutex一起用,哪位指点一下我哪里错了?
|
s*********b 发帖数: 815 | 3 Monitor只是实现同步的结构化方法。你把数据和相关的同步逻辑封
装到一起,就是monitor了。比如你有一砣ConcurrentHashMap的
实例,就叫cmap吧。当你调用cmap.put(key, value)的时候,你知
道cmap会处理多线程的情况。换句话说,camp就是一枚monitor,
它"监控”了多线程下的数据处理。Conditional variable (不是valuable)
是用来让线程暂时释放一枚lock用的。所以conditional variable多半
同lock绑定在一起,比如Java里java.util.concurrent.locks.Lock就提
供一枚方法叫newCondition(),返回一枚conditional variable. 至于
mutex,就是一坨概念嘛,符合mutex那几条规定。不妨把它想作一枚数
学对象。总结起来就是:lock可以用来实现mutex,而lock+conditional
variable可以用来实现monitor。 |
s********k 发帖数: 6180 | 4 谢谢, conditional variable本来就是要和lock一起使用,那么这样看来其实和
monitor没啥太大区别,主要也是字面意思的区别?
【在 s*********b 的大作中提到】 : Monitor只是实现同步的结构化方法。你把数据和相关的同步逻辑封 : 装到一起,就是monitor了。比如你有一砣ConcurrentHashMap的 : 实例,就叫cmap吧。当你调用cmap.put(key, value)的时候,你知 : 道cmap会处理多线程的情况。换句话说,camp就是一枚monitor, : 它"监控”了多线程下的数据处理。Conditional variable (不是valuable) : 是用来让线程暂时释放一枚lock用的。所以conditional variable多半 : 同lock绑定在一起,比如Java里java.util.concurrent.locks.Lock就提 : 供一枚方法叫newCondition(),返回一枚conditional variable. 至于 : mutex,就是一坨概念嘛,符合mutex那几条规定。不妨把它想作一枚数 : 学对象。总结起来就是:lock可以用来实现mutex,而lock+conditional
|
s*********b 发帖数: 815 | 5 不客气。有区别啊。Conditional variable和lock是实现手段,而monitor是实现的
结果。你可以用其他的手段实现monitor,未必需要conditional variable和lock。
【在 s********k 的大作中提到】 : 谢谢, conditional variable本来就是要和lock一起使用,那么这样看来其实和 : monitor没啥太大区别,主要也是字面意思的区别?
|
s********k 发帖数: 6180 | 6 那还有什么手段实现monitor?我看都Conditional variable和lock
【在 s*********b 的大作中提到】 : 不客气。有区别啊。Conditional variable和lock是实现手段,而monitor是实现的 : 结果。你可以用其他的手段实现monitor,未必需要conditional variable和lock。
|
s*********b 发帖数: 815 | 7 有lock-free的实现,但不用condition variable的就不知道了。
【在 s********k 的大作中提到】 : 那还有什么手段实现monitor?我看都Conditional variable和lock
|