blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:2959回复:2

Spin Lock, Event,Mutex, Semaphore 这些同步量有什么区别

楼主#
更多 发布于:2001-10-22 09:04
在内核中有不少同步对象,比如:Spin Lock(自旋锁), Event(事件),Mutex(互斥量), Semaphore(信号灯) ,这些同步量都可以保证同步,但究竟有什么区别,在哪些情况才能使用?

最新喜欢:

baoyibao99baoyib...
abeh
驱动牛犊
驱动牛犊
  • 注册日期2001-04-10
  • 最后登录2003-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-10-22 22:40
SpinLock是对付多CPU共享数据,后面的几个是对付多线程同步数据的,单CPU多线程情况下只有一个线程在工作,多CPU多线程情况下线程是同时运行的。
我爱开发
lz_mao
驱动中牛
驱动中牛
  • 注册日期2001-09-29
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2001-10-26 09:17
就像abeh老兄说的,spinlock是处理在多处理器环境下的。因为,在单处理器环境下,你可以将一个共享资源指定给一个线程,而杜绝其它线程对此资源的请求。可是在,多处理器环境下,你不能这样做,所以,利用spinlock来解决这种情况。
那么你提到的其余的同步量是处理同一处理器中多线程同步的。其中,包括你例出的Event(事件),Mutex(互斥量), Semaphore(信号灯) ,还有Timer object。有关这方面的东东,本站有很多资料。到“相关下载”处下载,介绍你一本,有一本ntfs book中的第三章中,很详细的解释了你的问题。快去down吧,很好的书。
我很笨。
游客

返回顶部