C++ 是std::this_thread::sleep_,用于在C+中为信号中断(或信号处理程序)定义的行为+;11?

C++ 是std::this_thread::sleep_,用于在C+中为信号中断(或信号处理程序)定义的行为+;11?,c++,linux,C++,Linux,unistd.h中的sleep()行为在Linux中有很好的定义 问题: C++11标准是否为信号中断/信号处理程序定义了std::this_thread::sleep_的行为? 如果是,行为是否依赖于平台?(我希望不是) 在Linux中实现不可中断的sleep()的最佳方法是什么?据我所知,这可以通过在调用sleep()之前阻塞所有信号来实现 C++11标准是否为信号中断/信号处理程序定义了std::this_thread::sleep_的行为 没有 行为是否依赖于平台 因为它是未指定的,所以

unistd.h
中的
sleep()
行为在Linux中有很好的定义

问题:

  • C++11标准是否为信号中断/信号处理程序定义了
    std::this_thread::sleep_的行为?
    如果是,行为是否依赖于平台?(我希望不是)

  • 在Linux中实现不可中断的
    sleep()
    的最佳方法是什么?据我所知,这可以通过在调用
    sleep()
    之前阻塞所有信号来实现

  • C++11标准是否为信号中断/信号处理程序定义了std::this_thread::sleep_的行为

    没有

    行为是否依赖于平台

    因为它是未指定的,所以可以

    我在linux上进行了测试,一个信号确实过早地中断了睡眠

    在Linux中实现不可中断睡眠()的最佳方法是什么

    最佳做法是不需要不可中断的
    睡眠
    sleep
    返回中断时的剩余睡眠时间,因此为了防止过早唤醒,您可以使用循环在中断后恢复睡眠:

    int time = 10;
    while(time = sleep(time));
    
    不幸的是,
    这个线程::sleep\u for
    的情况并非如此,它不会返回中断时剩余的时间