C++ SetTimer鍑芥暟鎬庝箞浣跨敤
C++ 涓病鏈?SetTimer 鍑芥暟锛屼絾鏄彲浠ヤ娇鐢ㄧ浉鍏崇殑搴撳嚱鏁版潵瀹炵幇瀹氭椂鍣ㄥ姛鑳姐€備笅闈㈡槸涓€绉嶄娇鐢?C++11 鏍囧噯鐨?chrono 搴撴潵瀹炵幇瀹氭椂鍣ㄧ殑鏂规硶锛?/p>
#include <iostream>
#include <chrono>
#include <thread>
void timerCallback()
{
std::cout << "瀹氭椂鍣ㄨЕ鍙?quot; << std::endl;
}
int main()
{
// 璁剧疆瀹氭椂鍣ㄦ椂闂撮棿闅斾负1绉?/span>
std::chrono::seconds interval(1);
// 瀹氫箟涓€涓爣蹇楀彉閲忥紝鐢ㄤ簬鎺у埗瀹氭椂鍣ㄩ€€鍑?/span>
bool flag = true;
// 鍒涘缓涓€涓嚎绋嬫潵鎵ц瀹氭椂鍣ㄥ洖璋冨嚱鏁?/span>
std::thread timerThread([&]() {
while (flag) {
// 绛夊緟鎸囧畾鐨勬椂闂撮棿闅?/span>
std::this_thread::sleep_for(interval);
// 璋冪敤瀹氭椂鍣ㄥ洖璋冨嚱鏁?/span>
timerCallback();
}
});
// 绛夊緟鐢ㄦ埛杈撳叆锛屾寜涓嬪洖杞﹂敭鍚庨€€鍑哄畾鏃跺櫒
std::cin.get();
// 淇敼鏍囧織鍙橀噺锛岄€€鍑哄畾鏃跺櫒绾跨▼
flag = false;
// 绛夊緟瀹氭椂鍣ㄧ嚎绋嬭繍琛岀粨鏉?/span>
timerThread.join();
return 0;
}
涓婅堪浠g爜涓紝浣跨敤浜?chrono
搴撴潵璁剧疆瀹氭椂鍣ㄧ殑鏃堕棿闂撮殧锛屽苟涓旈€氳繃 thread
鏉ュ垱寤轰竴涓嚎绋嬫墽琛屽畾鏃跺櫒鐨勫洖璋冨嚱鏁般€備富绾跨▼绛夊緟鐢ㄦ埛杈撳叆鍚庯紝淇敼鏍囧織鍙橀噺 flag
锛岃瀹氭椂鍣ㄧ嚎绋嬮€€鍑猴紝骞剁瓑寰呭畾鏃跺櫒绾跨▼杩愯缁撴潫銆?/p>
杩欏彧鏄竴绉嶇畝鍗曠殑瀹氭椂鍣ㄥ疄鐜版柟寮忥紝瀹為檯涓婅繕鍙互浣跨敤鍏朵粬鏂规硶鏉ュ疄鐜版洿澶嶆潅鐨勫畾鏃跺櫒鍔熻兘锛屾瘮濡備娇鐢ㄦ搷浣滅郴缁熺殑瀹氭椂鍣ㄦ満鍒舵垨鑰呬娇鐢ㄧ涓夋柟搴撱€傚叿浣撶殑瀹炵幇鏂瑰紡鍙互鏍规嵁闇€姹傝繘琛岄€夋嫨銆?/p>