【发布时间】:2009-04-22 12:12:40
【问题描述】:
从概念和实现的角度来看,真正的区别是什么
信号量、互斥量、监视器?
我们说信号量是资源分配计数器...好吧我明白了..
对于互斥量,我们说互斥量是二进制信号量...天哪,那是什么???
监视器保护对象的入口点...即只有一个线程可以获取它并可以运行其中一个受保护的入口点???那么互斥锁是干什么用的?
【问题讨论】:
标签: multithreading synchronization
从概念和实现的角度来看,真正的区别是什么
信号量、互斥量、监视器?
我们说信号量是资源分配计数器...好吧我明白了..
对于互斥量,我们说互斥量是二进制信号量...天哪,那是什么???
监视器保护对象的入口点...即只有一个线程可以获取它并可以运行其中一个受保护的入口点???那么互斥锁是干什么用的?
【问题讨论】:
标签: multithreading synchronization
信号量是一种锁定机制,iirc 从概念上讲,它们可以配置为允许对一个对象进行多个访问;例如一次访问三个,一次访问四个,等等。
Mutex 是信号量的一种特殊情况,用于确保互斥,即在任何给定时间,只有一个人可以访问受保护的资源。
需要注意的是,在等待访问共享资源时,信号量和互斥量都不能确保严格的顺序。当资源变得可访问时,一些等待线程将获得访问权限,但不保证将是哪个线程。从统计上讲,最终所有线程都将(必须)获得访问权限。
监视器通过按特定顺序排队等待的线程/进程来强制执行优先级,而不一定是它们如何到达。操作系统是监视器的一个示例——确保单个进程在任何给定时间都拥有 CPU。
【讨论】: