首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果一个线程被告知休眠0秒,它会休眠吗?

如果一个线程被告知休眠0秒,它会休眠吗?
EN

Stack Overflow用户
提问于 2019-09-07 01:53:47
回答 1查看 399关注 0票数 6

我的问题很简单。如果我使用std::this_thread::sleep_for(0ms),线程会休眠吗?

我知道这似乎是一个愚蠢的问题,但当我告诉一个线程休眠一小段时间(例如10微秒)时,它通常会休眠至少5-10毫秒。我知道这与操作系统如何调度它们的进程有关。我只想知道所有的转角案例是如何工作的,因为我有一些代码可能会因为睡眠时间很短、零或负数而变慢。

编辑1:我已经将问题简化为零秒睡眠。

编辑2:到目前为止,许多评论都是关于我不应该尝试这样做,但我都有理由,而且我很好奇。在我的代码中,我并没有直接调用std::this_thread::sleep_for(0ms),而是根据外部条件休眠了一段可变的时间。当我计算我需要睡眠的时间时,结果可以是正的、负的或零。我想知道我是否仍在等待小于或等于零的结果。

EN

回答 1

Stack Overflow用户

发布于 2019-09-07 07:11:10

我在典型平台上观察到的最常见的行为是,它的行为就像一个自愿的收益操作。也就是说,它不会执行任何操作,除非存在当前未调度的另一个准备运行的线程,在这种情况下,它将让位于该线程。

对于平台如何处理这种情况,没有具体的要求。把它当做“无人操作”是完全合理的。将其视为平台所能支持的最短睡眠也是完全合理的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57826600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档