答案 0 :(得分:4)
之后文件立即说:
因此,一个线程可以在另一个线程之前调用获取,但是在另一个线程之后到达排序点
这意味着可能出现这种情况:
thread 1 thread 2
-------- --------
calls acquire()
calls acquire()
acquire() does its job
acquire() does its job
(其中acquires() does its job
是doc所称的“排序点”)
简而言之:无法保证,及时说,第一个调用acquire()
的线程首先获取信号量。 保证的是,当它从acquire()
返回时,其他acquire()
来电者将不得不等待。
这种情况很少见,但可能。
答案 1 :(得分:1)
它们指的是acquire()方法内部的执行点。它们意味着,在acquire()的实现中,有一些'排序点',第一个到达那里的线程将是第一个离开的。因此,如果线程A接到调用,则在B之前输入acquire(),但是B首先到达排序点,B将首先出现(尽管进入获取秒)。