#ifndef DOMAIN_H
#define DOMAIN_H
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <atomic>
class DoMain
{
public:
DoMain();
~DoMain();
void threadTimerHandle();
private:
std::mutex m_mtx;
std::condition_variable m_cv;
public:
std::atomic<bool> m_ready;
};
#endif // DOMAIN_H
#include "domain.h"
DoMain::DoMain()
{
m_ready = false;
//已经调用了login,在这里等待
//std::thread t = std::thread(&DoMain::handleThread, this);
std::thread t1 = std::thread(&DoMain::threadTimerHandle, this);
std::unique_lock<std::mutex> lk(m_mtx);
//auto time = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();
//时间点的使用
auto now = std::chrono::system_clock::now();
auto toTime = now + std::chrono::seconds(5);
//阻塞在这里,直到被唤醒
m_cv.wait_until(lk, toTime);
lk.unlock();
if(t1.joinable())
t1.join();
std::cout << "DoMain finish\n" << std::endl;
}
DoMain::~DoMain()
{
}
//定时器线程:睡5秒后,条件变量唤醒
void DoMain::threadTimerHandle()
{
std::this_thread::sleep_for(std::chrono::seconds(5));
std::cout << "threadTimerHandle\n" << std::endl;
m_cv.notify_all();
m_ready = true;
}
更多时间相关的:
https://blog.youkuaiyun.com/wizardtoh/article/details/81738682
本文介绍了一个基于C++实现的简单并发程序示例,通过使用互斥锁、条件变量及原子变量来实现线程间的同步。此外,还展示了如何创建一个定时器线程并在指定时间后唤醒其他线程。
9413

被折叠的 条评论
为什么被折叠?



