whitesock

BlogJava 首页 新随笔 联系 聚合 管理
  10 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

2012年2月8日 #

Linux Kernel支持atomic bit operation。一个有意思的问题是:为什么有必要保证位操作的原子性?原因在于它会确保每次操作一定生效。例如对某个位进行两次操作,分别是设置0和1,那么这两次操作都会被执行,而不会被优化成一次性设置1。这在概念上有点类似epoll的edge trigger 和 level trigger。此外在Java SE中,由于伪唤醒的存在,我们都会在一个循环里check condition和wait。但是在被唤醒和下次check的时间间隔内,condition可能再次发生变化,从而导致错过相应的事件。为了实现edge trigger,我们只能是自己实现一个versioned wait,貌似Java concurrent应该引入这样一种同步原语。

posted @ 2012-02-08 00:27 whitesock 阅读(221) | 评论 (0)编辑 收藏

仅列出标题