gpt4 book ai didi

c - 为什么 nanosleep 0 仍然执行?

转载 作者:行者123 更新时间:2023-12-04 10:37:16 26 4
gpt4 key购买 nike

我正在尝试在我的代码中测试 nanosleep 的性能。当我调用 nanosleep 并在 0 秒和 0 纳秒内传递时,与甚至不调用 nanosleep 相比,我得到了不同的值。如果我用 0 作为参数调用它,nanosleep 不应该完全没有效果吗?

最佳答案

sleep(0) 和可能带有零的 nanosleep 为线程提供了一种机制来交出其剩余的时间片。这实际上是一个线程产量。因此,当调用 sleep(0) 时,我们进入内核模式并将线程放入“可运行”队列。然后,线程被安排在下一个可用时隙可用时恢复。何时发生这种情况完全取决于操作系统。

一个用例(可能不是最好的用例)是用户空间自旋锁。当“在等待资源的同时自旋时,我们调用 sleep(0)。这允许可以安排可能释放资源的任务,从而更快地释放锁。

关于c - 为什么 nanosleep 0 仍然执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com