阅读:2959回复:2
Spin Lock, Event,Mutex, Semaphore 这些同步量有什么区别
在内核中有不少同步对象,比如:Spin Lock(自旋锁), Event(事件),Mutex(互斥量), Semaphore(信号灯) ,这些同步量都可以保证同步,但究竟有什么区别,在哪些情况才能使用?
|
|
最新喜欢:baoyib... |
沙发#
发布于:2001-10-22 22:40
SpinLock是对付多CPU共享数据,后面的几个是对付多线程同步数据的,单CPU多线程情况下只有一个线程在工作,多CPU多线程情况下线程是同时运行的。
|
|
|
板凳#
发布于:2001-10-26 09:17
就像abeh老兄说的,spinlock是处理在多处理器环境下的。因为,在单处理器环境下,你可以将一个共享资源指定给一个线程,而杜绝其它线程对此资源的请求。可是在,多处理器环境下,你不能这样做,所以,利用spinlock来解决这种情况。
那么你提到的其余的同步量是处理同一处理器中多线程同步的。其中,包括你例出的Event(事件),Mutex(互斥量), Semaphore(信号灯) ,还有Timer object。有关这方面的东东,本站有很多资料。到“相关下载”处下载,介绍你一本,有一本ntfs book中的第三章中,很详细的解释了你的问题。快去down吧,很好的书。 |
|
|