c++ 毫秒 可以绑定多个回调的定时器
时间: 2024-04-12 07:26:43 浏览: 131
在 C++ 中,你可以通过使用计时器库或者定时器类来实现绑定多个回调的毫秒级定时器。以下是一个示例使用 C++11 标准库的 `std::thread` 和 `std::chrono` 来实现的简单定时器:
```cpp
#include <iostream>
#include <thread>
#include <chrono>
class Timer {
public:
Timer(std::chrono::milliseconds interval, std::function<void()> callback)
: interval_(interval), callback_(callback), is_running_(false) {}
void start() {
is_running_ = true;
thread_ = std::thread([this]() {
while (is_running_) {
std::this_thread::sleep_for(interval_);
callback_();
}
});
}
void stop() {
is_running_ = false;
if (thread_.joinable()) {
thread_.join();
}
}
private:
std::chrono::milliseconds interval_;
std::function<void()> callback_;
std::thread thread_;
bool is_running_;
};
void callback1() {
std::cout << "Callback 1 called!" << std::endl;
}
void callback2() {
std::cout << "Callback 2 called!" << std::endl;
}
int main() {
Timer timer1(std::chrono::milliseconds(1000), callback1);
Timer timer2(std::chrono::milliseconds(500), callback2);
timer1.start();
timer2.start();
std::this_thread::sleep_for(std::chrono::seconds(5));
timer1.stop();
timer2.stop();
return 0;
}
```
在上面的示例中,我们创建了一个 `Timer` 类来表示定时器,通过传入定时间隔和回调函数来初始化定时器。在 `start()` 方法中,我们使用一个循环来等待指定的时间间隔,然后调用回调函数。在 `main()` 函数中,我们创建了两个定时器实例,分别绑定了两个不同的回调函数,并启动了定时器。通过调整定时器的时间间隔和运行时间,你可以自由控制定时器的行为。
阅读全文