gpt4 book ai didi

c++ - 在 Ubuntu 中使用值大于 1000000 的 usleep 是否安全

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:59 24 4
gpt4 key购买 nike

我在 usleep man 中看到那:

EINVAL
usec is not smaller than 1000000. (On systems where that is considered an error.)

所以我想知道在 Ubuntu 中使用值大于 1000000 的 usleep 是否可以,如果不能(或者如果我想支持其他平台)当我需要 sleep 时有什么选择2.2 秒(例如)。

谢谢。

最佳答案

一种替代方法是信任文档并使用循环实现它以确保安全:

#define USLEEP_MAX (1000000 - 1)

void long_sleep(unsigned long micros)
{
while(micros > 0)
{
const unsigned long chunk = micros > USLEEP_MAX ? USLEEP_MAX : micros;
usleep(chunk);
micros -= chunk;
}
}

您还应该检查 usleep() 的返回值,为简洁起见我省略了它。

在生产中,您可以玩得开心 Autoconf和 friend 在编译时检测正确的 USLEEP_MAX,如果本地系统没有参数限制,甚至切换到普通包装器。可以享受数小时的乐趣。

关于c++ - 在 Ubuntu 中使用值大于 1000000 的 usleep 是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12175106/

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