[TOC]
Semaphore 类似于操作系统中的信号量,可以控制对互斥资源的访问线程数。
可以看到公平共享锁和非公平共享锁的区别就在是否需要判断队列中是否有已经等待的线程。公平共享锁需要先判断,非公平共享锁直接插队,尽管前面已经有线程在等待。
非公平锁acquire,内部重写,如果state<0 会被阻塞,如果成功,会扣取state值
acquire state减一 release加一
1 | class test { |
[TOC]
Semaphore 类似于操作系统中的信号量,可以控制对互斥资源的访问线程数。
可以看到公平共享锁和非公平共享锁的区别就在是否需要判断队列中是否有已经等待的线程。公平共享锁需要先判断,非公平共享锁直接插队,尽管前面已经有线程在等待。
非公平锁acquire,内部重写,如果state<0 会被阻塞,如果成功,会扣取state值
acquire state减一 release加一
1 | class test { |