2016-01-15 31 views
-1

我试图更好地理解使用与互斥锁有关的睡眠函数调用。如果一个线程持有一个互斥体,而另一个线程的睡眠过期,控制权是否会立即返回到第一个线程,或者线程是否必须至少等待被保持的互斥体被释放,然后再切换回另一个线程?睡眠函数调用与互斥锁有关

+0

它被标记为'java'和'C++'。细节会有所不同。你想知道两者,还是只有一个? –

+0

在java中,睡眠与互斥锁无关。这是一种类似于任何其他方法的方法,也许你想说一些类似于此方法的方法 –

+0

@ ErickG.Hagstrom是的,我确实想知道关于这两者的所有方面, – SilentPinnacle

回答

3

Thread.sleep()与任何类型的锁之间没有关系。

在至少nnn毫秒(除非它引发InterruptedException)之后返回调用Thread.sleep(nnn),这就是开发人员需要知道的全部内容。

几乎所有您需要了解的互斥锁(例如,​​块)都是只有一个线程可以在同一时间锁定相同的实例。所有者解锁后,锁定的互斥锁即可用于等待线程。它与任何线程是否正在或正在调用sleep()无关。

+0

和(除了函数名称和不存在的'同步“块),这同样适用于C++。 –