理解 mutex,semaphore,monitor(Java 并发)

what is mutex? in chinese means 互斥锁

what is semaphore? in chinese means 信号量

what is monitor? in chinese means 管程

             图片链接:

                   http://slideplayer.com/slide/4857494/

理解 mutex,semaphore,monitor(Java 并发)_第1张图片
同步范例
理解 mutex,semaphore,monitor(Java 并发)_第2张图片
overview

上图给出了三种java中的同步方式:

         其中mutex是一个二元semaphores

但是mutex 和 semaphores的区别是

   just like this:


理解 mutex,semaphore,monitor(Java 并发)_第3张图片
mutex

mutex 只用于保护临界区的代码,即一个线程释放mutex锁后,可能又获得同一个锁,会产生饥饿


理解 mutex,semaphore,monitor(Java 并发)_第4张图片
semaphore

semaphore可以保证锁同步,释放后不会再获取,让别的线程获取锁

理解 mutex,semaphore,monitor(Java 并发)_第5张图片
管程
理解 mutex,semaphore,monitor(Java 并发)_第6张图片
monitor基于条件变量
理解 mutex,semaphore,monitor(Java 并发)_第7张图片
monitor


理解 mutex,semaphore,monitor(Java 并发)_第8张图片
sync and monitor

bounder buffer

理解 mutex,semaphore,monitor(Java 并发)_第9张图片
无界缓冲

以无界缓冲为例,生产者 从In 的位置往右写,消费者从Out的位置向右取,当缓冲空时不能取

生产者往缓冲区放一个物品,如果满了就等待;消费者从同一缓冲区取一个物品,如果空了就等待。这个过程就需要同步


理解 mutex,semaphore,monitor(Java 并发)_第10张图片
生产消费问题
理解 mutex,semaphore,monitor(Java 并发)_第11张图片
生产者消费者

 读写操作需要同步


理解 mutex,semaphore,monitor(Java 并发)_第12张图片
Sync for Read/Write

生产消费问题在bounded buffer 中的描述


理解 mutex,semaphore,monitor(Java 并发)_第13张图片
生产消费

你可能感兴趣的:(理解 mutex,semaphore,monitor(Java 并发))