【问题标题】:Sleep Function Calls in Relation to Mutex Locks与互斥锁相关的睡眠函数调用
【发布时间】:2016-04-21 06:14:05
【问题描述】:

我试图更好地掌握使用与互斥锁相关的睡眠函数调用。如果一个线程在另一个线程的睡眠到期时持有互斥锁,控制是否立即返回到第一个线程,或者线程是否必须至少等待被持有的互斥锁在切换回之前首先被释放另一个线程?

【问题讨论】:

  • 这被标记为javac++。细节会有所不同。您想了解两者还是只了解其中之一?
  • 在 java 中,方法 sleep 与互斥锁无关。这是一个和其他方法一样的方法,也许你想说的是方法 await
  • @ErickG.Hagstrom 是的,我确实想了解两者,

标签: java c++ multithreading mutex sleep


【解决方案1】:

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

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

关于互斥锁(例如,synchronized 块),您需要了解的几乎就是只有一个线程可以同时锁定同一个实例。一旦所有者解锁,锁定的互斥锁就可供等待线程使用。这与任何线程是否在或是否在 sleep() 调用中无关。

【讨论】:

  • 而且(除了函数名称和不存在synchronized 块等细微差别之外),这同样适用于C++。
猜你喜欢
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 2016-04-21
  • 1970-01-01
  • 2011-11-13
相关资源
最近更新 更多