使用std::bind()构造一个计时器
时间: 2024-10-03 18:03:26 浏览: 42
C++ 11 std::function和std::bind使用详解
在C++标准库中,`std::function` 和 `std::bind` 可以配合使用来创建一个类似于定时器的功能。`std::function`是一个通用的函数指针容器,而`std::bind`则可以用来绑定函数到特定的对象和参数。下面是一个简单的例子,假设我们有一个需要定期调用的函数:
```cpp
#include <iostream>
#include <chrono>
#include <thread>
#include <functional>
// 假设有个需要定时执行的函数
void myTimerFunction(int delayInSeconds) {
std::this_thread::sleep_for(std::chrono::seconds(delayInSeconds));
std::cout << "Timer executed after " << delayInSeconds << " seconds.\n";
}
int main() {
// 创建一个std::function,绑定myTimerFunction到一个延迟值
auto timerFunc = std::bind(myTimerFunction, 5);
// 每隔5秒执行一次
std::thread timerThread(timerFunc);
// 等待一段时间,然后停止定时器(这里只是为了演示,实际应用中可能不需要)
std::this_thread::sleep_for(std::chrono::seconds(10));
// 如果你想取消定时任务,可以不再调用timerFunc
timerThread.join(); // 等待线程结束
return 0;
}
```
阅读全文