狭义的同步的方法,互斥的方法,请分开说,越全越好。

来源:百度知道 编辑:UC知道 时间:2024/04/30 14:02:13
我了解在Winows上用VC++有四种经典方法,但哪些是能解决同步的,哪些是能解决互斥的呢?
在Linux下,内核并发控制有自旋锁和信号量两种经典方法,他们能解决互斥,同步的话信号量可以,还有别的方法吗?
谁的操作系统学的大牛啊?

我觉得进程或线程的同步与互斥的根本就是P-V原语,实际上windows系统或linux系统使用的同步互斥方法都是对P-V原语的封装.

说明:我不是来拿分的,只是个人的一些理解.

互斥和同步的区别:一个只要不同时发生就行,谁先谁后看排队、优先级;一个是动作要有严格的时间顺序。
--
从这个定义上来看,lock系列应该算是互斥,而WaitForObject就算是同步了.
所以在windows里面,互斥的有以下一些函数:
EnterCriticalSection(Leave)
TryEnterCriticalSection
InterlockedDecrement
InterlockedIncrement
InterlockedExchange
....

而同步的则有:
WaitForMultipleObjects(Ex)
WaitForSingleObject(Ex)
MsgWaitForMultipleObjects(Ex)
....

中断屏蔽、原子操作、自旋锁、信号量是解决互斥途径