0%

C++简单定时器事件实现

使用 C++ 来实现定时器事件,可以使用 std::thread 来实现,也可以使用 std::async 来实现。

std::thread

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <thread>

int main()
{
/// 创建线程
std::thread t([]() {
while (true)
{
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "Hello World!" << std::endl;
}
});

/// 线程从主线程分离
t.detach();

/// 阻止主线程退出
while (true)
{
}
return 0;
}

运行结果:

image

std::async

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <future>
#include <thread>

int main()
{
/// 函数对象递归调用自己
std::function<void(int)> f = [&](int i) {
/// 休息1秒
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "Hello World!" << i << std::endl;
f(i);
};

std::async(std::launch::async, f, 43);

/// 阻止主线程退出
while (true)
{
}
return 0;
}

运行结果:

image