C++标准库 创建定时器
时间: 2024-09-18 17:17:26 浏览: 10
在C++中,创建定时器通常不是通过标准库直接提供的功能,因为标准库本身并不支持实时操作系统级别的精确定时。然而,如果你是在Windows平台,可以使用`<windows.h>`头文件中的`CreateWaitableTimer`函数来创建一个Windows定时器。而在Linux或其他POSIX系统中,你可以使用`<chrono>`、`<thread>`以及一些信号处理相关的库(如`boost::asio::deadline_timer`)。
例如,在Windows上,你可以这样做:
```cpp
#include <windows.h>
HANDLE CreateTimerExample() {
HANDLE hTimer = NULL;
if (CreateWaitableTimer(NULL, FALSE, L"MyTimer")) {
hTimer = reinterpret_cast<HANDLE>(hTimer);
// 设置定时器属性
SetWaitableTimer(hTimer, NULL, milliseconds(5000), NULL, NULL, TRUE);
}
return hTimer;
}
```
而在Linux或现代C++环境中,你可以考虑使用`std::chrono`库配合`std::condition_variable`:
```cpp
#include <iostream>
#include <thread>
#include <chrono>
void timer_function(std::chrono::steady_clock::time_point deadline) {
while (true) {
std::this_thread::sleep_for(std::chrono::milliseconds(100));
if (std::chrono::steady_clock::now() >= deadline) {
break;
}
}
}
int main() {
auto deadline = std::chrono::high_resolution_clock::now() + std::chrono::seconds(5);
std::thread timer_thread(timer_function, deadline);
// 主线程在这里执行其他任务...
timer_thread.join();
return 0;
}
```