web-dev-qa-db-ja.com

OSX上のC ++でのスリープ操作

上記の操作をミリ秒単位で実行したい。どのライブラリと関数呼び出しを優先する必要がありますか?

8
m_j

2017年編集:C++ 11 sleep_forはこれを行う正しい方法です。 以下のXornadの回答 を参照してください。


C++ 03:

Mac OS XはUnixベースであるため、ほとんどの場合、標準のLinux関数を使用できます。

この場合、usleep(マイクロ秒単位で時間がかかります)を使用し、ミリ秒に1000を掛けてマイクロ秒を取得できます。

#include <unistd.h>
int main () {
    usleep(1000); // will sleep for 1 ms
    usleep(1); // will sleep for 0.001 ms
    usleep(1000000); // will sleep for 1 s
}

この関数の詳細については、Linuxのmanページを確認してください。

http://linux.die.net/man/3/usleep

18
NHDaly

コンパイラでC++ 11をサポートしている場合は、sleep_forを使用して、OS固有のAPIを使用する必要をなくすことができます。 ( http://en.cppreference.com/w/cpp/thread/sleep_for

#include <thread>
#include <chrono>

int main()
{
    std::this_thread::sleep_for(std::chrono::milliseconds(1000));
    return 0;
}
13
Xornand