前言
本篇文章將教各位如何透過 C++ 實現一個定時器。功能類似 JavaScript 的 setInterval()
與 setTimeout()
。首先建立一個 timercpp.h
實作定時器功能,完整程式碼可以參考。各位也可以參考文末的 Referenct 看原著作的版本。
- setInterval() 是固定延遲了某段時間之後,執行對應的程式碼,並且不斷地重複定時被執行。
#include <iostream>
#include "timercpp.h"
using namespace std;
int main() {
Timer t = Timer();
int count = 1;
// 固定延遲循環
t.setInterval([&]() {
cout << "Hey.. After each 1s... " << count++ << endl;
}, 1000);
while(true); // Keep main thread active
}
- setTimeout() 的功能是在延遲了某段時間 (單位為毫秒) 之後,才去執行一次。
#include <iostream>
#include "timercpp.h"
using namespace std;
int main() {
Timer t = Timer();
// 定時倒數
t.setTimeout([&]() {
cout << "Hey.. After 3s. But I will stop the timer!" << endl;
t.stop();
}, 3000);
while(true); // Keep main thread active
}
編譯時需要使用 -pthread
flag。pthread 是 POSIX 下的執行緒標準,定義了創建和操縱執行緒的一套API。
g++ -o main ./main.cpp -pthread
C/C++ sleep 用法 (標準庫)
Linux/Unix 平台 (秒)
Linux 使用 unistd.h
達到睡眠延遲效果。unistd.h
是C 和 C++ 程序設計語言中提供對 POSIX 作業系統 API。 在 Linux/Unix 平台的 sleep()
的時間單位是秒。若要達到微秒等級可以使用 usleep()
。
#include <stdio.h>
#include <unistd.h>
int main() {
sleep(3);
printf("print after 3 sec.\n");
}
Windows 平台(毫秒)
在 Windows 平台的 Sleep()
的時間單位是毫秒。
#include <stdio.h>
#include <windows.h>
int main() {
Sleep(3000);
printf("print after 3 sec.\n");
}
Reference
鼓勵持續創作,支持化讚為賞!透過下方的 Like 拍手👏,讓創作者獲得額外收入~
版主10在2020年首次開設YouTube頻道,嘗試拍攝程式教學。想要了解更多的朋友歡迎關注我的頻道,您的訂閱就是最大的支持~如果想學其他什麼內容也歡迎許願XD
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A