**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
我们不允许问题寻求书籍、工具、软件库等的建议。您可以编辑问题,以便使用事实和引文来回答。
26天前关闭。
Improve this question
我弄不清楚线程的两种状态之间的区别。请解释一下这个区别。
**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
我们不允许问题寻求书籍、工具、软件库等的建议。您可以编辑问题,以便使用事实和引文来回答。
26天前关闭。
Improve this question
我弄不清楚线程的两种状态之间的区别。请解释一下这个区别。
2条答案
按热度按时间yyyllmsg1#
这主要是一个术语问题。睡眠意味着线程被挂起一段特定的时间,并在该时间过后重新调度。
挂起只是指由于被阻止(例如等待I/O)或被要求挂起(例如想要休眠)而未被操作系统运行。
42fyovps2#
我同意@bazza的观点,这是由定义操作系统API或提供
sleep
和suspend
调用的库的人做出的选择。在我遇到的大多数API中,
sleep
是一个线程只能对自己做的事情,而suspend
(与resume
配对)是一个线程只能对另一个线程做的事情。X1 M5 N1 X可以用在产品代码中以提供时间延迟,或者用在实时-ish调度算法的中心。另一方面,X1 M6 N1 X和X1 M7 N1 X通常被记录为“危险”调用,它们不应该用在产品代码中,但是可以用于诊断目的。
这两个词的使用都独立于“阻塞”一词,后者通常只是意味着有某种原因(任何原因)不允许某个线程运行。