首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何定期唤醒C++ 11线程?

在C++11中,可以使用条件变量和互斥量来定期唤醒线程。以下是一个示例代码:

代码语言:txt
复制
#include <iostream>
#include <thread>
#include <chrono>
#include <mutex>
#include <condition_variable>

std::mutex mtx;
std::condition_variable cv;
bool isReady = false;

void workerThread()
{
    while (true)
    {
        std::unique_lock<std::mutex> lock(mtx);
        // 等待条件满足
        cv.wait(lock, []{ return isReady; });

        // 执行需要定期执行的任务
        std::cout << "Worker thread is executing..." << std::endl;

        // 任务完成后重置条件
        isReady = false;
        lock.unlock();
    }
}

int main()
{
    // 创建工作线程
    std::thread worker(workerThread);

    // 定期唤醒工作线程
    while (true)
    {
        std::this_thread::sleep_for(std::chrono::seconds(5));

        std::lock_guard<std::mutex> lock(mtx);
        isReady = true;
        cv.notify_one();
    }

    // 等待工作线程结束
    worker.join();

    return 0;
}

在上述示例中,主线程定期唤醒工作线程来执行需要定期执行的任务。使用std::condition_variable等待条件满足,然后再执行任务。在工作线程中,通过cv.wait()等待条件变量满足。当条件变量被唤醒时,执行需要定期执行的任务,并在任务完成后重置条件变量。

对于这个问题,腾讯云的相关产品和产品介绍链接如下:

请注意,以上只是腾讯云提供的一些云计算相关产品,具体选择哪种产品取决于实际需求和场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券