5種類の方法があります。C言語ではsleep関数とusleep関数、C++ではsleep_for関数の利用が可能です。Objective-CやSwiftの場合はNSThreadを用いることができます。Windows環境の場合はwindows.hヘッダーのSleep関数を用いると良いでしょう。
一時停止
- NSThread.sleepForTimeInterval(Objective-C/Swift)
- sleep関数(C言語/C++)
- usleep関数(C言語/C++)
- Sleep関数(C言語/C++, windows.h)
- sleep_for(C++)
遅延実行
CPUのスレッドを停止させずに、特定の処理だけを遅延・待機させたいような場合には、タイマーによる遅延実行が必要です。以下のページを参考にしてください。
処理を遅延実行する方法
NSThread.sleepForTimeInterval
Cocoa/Cocoa Touchフレームワーク標準のもの。
秒単位で処理を止めます。
「2.5秒」等、小数点での指定も可能です。
// #import <Foundation/NSThread.h>
/* Objective-C */
printf("3秒処理が止まります");
[NSThread sleepForTimeInterval:3.0];
/* Swift */
print("3秒処理が止まります")
NSThread.sleepForTimeInterval(3.0) // Swift 3 以前
Thread.sleep(forTimeInterval: 3.0) // Swift 4 以降
sleep関数
Unix標準ライブラリのもの。
秒単位で処理を止めます。
// #include <unistd.h>
printf("3秒処理が止まります");
sleep(3);
usleep関数
Unix標準ライブラリのもの。
マイクロ秒単位で処理を止めます。
// #include <unistd.h>
printf("3秒処理が止まります");
usleep(3 * 1000000);
Sleep関数
Windows環境で使用可能。
ミリ秒単位で処理を止めます。
// #include <windows.h>
printf("3秒処理が止まります");
Sleep(3 * 1000);
sleep_for
C++の場合はsleep_for関数によるスレッドのスリープが可能です。
// #include <chrono>
// #include <thread>
std::this_thread::sleep_for(std::chrono::nanoseconds(3)); // 3 ナノ秒
std::this_thread::sleep_for(std::chrono::microseconds(3)); // 3 マイクロ秒
std::this_thread::sleep_for(std::chrono::milliseconds(3)); // 3 ミリ秒
std::this_thread::sleep_for(std::chrono::seconds(3)); // 3 秒
std::this_thread::sleep_for(std::chrono::minutes(3)); // 3 分
std::this_thread::sleep_for(std::chrono::hours(3)); // 3 時間
小数点による時間指定は出来ませんが、上記のsecondsやminutes等のdurationオブジェクトは異なる精度同士での演算に対応しています。
std::this_thread::sleep_for(
std::chrono::seconds(3) + // 3秒
std::chrono::milliseconds(500) // 0.5秒
); // wait 3.5 秒
std::this_thread::sleep_for(
4 * std::chrono::milliseconds(500) // 0.5秒 ✕ 4
); // wait 2 秒
このように異なる時間同士の合算が可能となっています。
私「3秒時間が止まります・・・」
Objective-C「知ってる!それ中二病ってやつでしょ!!」