Semaphore-限制对某个共享资源进行访问的线程的数量 https://my.oschina.net/u/1445731/blog/200413

Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。

Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。

信号量可以用来限制对某个共享资源进行访问的线程的数量。在对资源进行访问之前,线程必须从得到信号量的许可(调用Semaphore对象的acquire()方法);在完成对资源的访问后,线程必须向信号量归还许可(调用Semaphore对象的release()方法)。

run:

accessing: 1

accessing: 2

accessing: 3

release: 3

accessing: 6

release: 2

accessing: 4

release: 4

accessing: 5

release: 1

accessing: 7

release: 7

accessing: 8

release: 5

accessing: 9

release: 6

release: 8

release: 9

成功构建 (总时间: 2 秒)

 

Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。