Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在无人值守的房间睡觉?_C++_Qt - Fatal编程技术网

C++ 如何在无人值守的房间睡觉?

C++ 如何在无人值守的房间睡觉?,c++,qt,C++,Qt,似乎QRunnable没有sleep方法。 如何在QRunnable中调用类似QThread::sleep的方法?只需使用::sleep()它不在Qt中,而是POSIX.1-2001函数 您还可以尝试此代码,因为QThread::sleep()调用::sleep() 诺基亚认证的Qt开发者在会议上回答了这个问题 不要使用特定于平台的功能。Qt的最大优点是它非常容易携带。不要因为睡眠而毁了它 class mythreadhelper : public QThread { public:

似乎
QRunnable
没有
sleep
方法。

如何在
QRunnable
中调用类似
QThread::sleep
的方法?

只需使用
::sleep()
它不在Qt中,而是POSIX.1-2001函数

您还可以尝试此代码,因为
QThread::sleep()
调用
::sleep()

诺基亚认证的Qt开发者在会议上回答了这个问题

  • 不要使用特定于平台的功能。Qt的最大优点是它非常容易携带。不要因为睡眠而毁了它

    class mythreadhelper : public QThread
    {
       public:
       static void mysleep(int ms)
       {
          return sleep(ms);
       }
    };
    
  • 您只能在Qt 5中使用
    QThread::sleep
    from
    QRunnable
    QtConcurent
    ,因为在那里声明为public:

  • void QThread::sleep(无符号长秒)[受静态保护]//Qt 4.8

    void QThread::sleep(无符号长秒)[static]//Qt 5.0

    您可以使用互斥作为早期Qt版本的解决方案:

    QMutex m(QMutex::NonRecursive);
    m.lock();
    m.tryLock(timeout);
    

    互斥锁将无法递归锁定,并将等待超时。

    如何调用
    ::sleep()
    ?如果查看上面的代码,它将在以下行中调用:
    返回睡眠(ms)。所以只需输入
    sleep()
    并将毫秒数放在括号中。
    表示它在全局范围内,并且是可选的。系统或操作系统功能通常在全局范围内,有时只是为了将这些功能与成员功能区分开来。有点像有些人将
    this->
    放在他们的成员函数调用前面。不完全是这样
    QThread::sleep
    睡眠数秒。posix的
    ::sleep
    也是如此。但是,在Windows上::Sleep
    会休眠若干毫秒。@CDT:您应该使用QThread方法,因为它与平台无关。仅对于Windows,Windows.h中有::Sleep