C++11仿制java CountDownTimer
时间: 2024-01-11 15:48:36 浏览: 82
在C++11中,可以使用std::thread和std::chrono来实现一个类似于Java CountDownTimer的计时器。
下面是一个简单的示例代码:
```c++
#include <thread>
#include <chrono>
class CountDownTimer {
public:
CountDownTimer(int seconds, std::function<void()> callback)
: mSeconds(seconds), mCallback(callback) {}
~CountDownTimer() {
stop();
}
void start() {
mThread = std::thread([this]() {
while (mSeconds > 0) {
std::this_thread::sleep_for(std::chrono::seconds(1));
mSeconds--;
}
mCallback();
});
}
void stop() {
if (mThread.joinable()) {
mThread.join();
}
}
private:
int mSeconds;
std::function<void()> mCallback;
std::thread mThread;
};
```
使用示例:
```c++
void callback() {
std::cout << "Time's up!\n";
}
int main() {
CountDownTimer timer(10, callback);
timer.start();
// do something else
timer.stop();
return 0;
}
```
在上述示例中,CountDownTimer类接受一个整数秒数和一个回调函数作为构造函数参数。start()方法启动一个新的线程,该线程每隔一秒钟减少一秒钟,并在计时结束时调用回调函数。stop()方法停止计时器并等待线程完成。在主函数中,创建一个计时器对象,开始计时,然后执行其他操作,最后停止计时器。
阅读全文