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

C++在没有while的情况下在主线程中等待将来(True)

在没有while循环的情况下,在主线程中等待将来(True),可以使用条件变量和互斥锁来实现。

条件变量是一种线程间的同步机制,它允许一个线程等待另一个线程满足某个条件后再继续执行。互斥锁用于保护共享资源,确保在同一时间只有一个线程可以访问该资源。

以下是使用条件变量和互斥锁实现的C++代码示例:

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

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

void workerThread()
{
    // 模拟耗时操作
    std::this_thread::sleep_for(std::chrono::seconds(2));

    // 工作完成后通知主线程
    {
        std::lock_guard<std::mutex> lock(mtx);
        ready = true;
    }
    cv.notify_one();
}

int main()
{
    std::thread worker(workerThread);

    // 等待工作完成
    {
        std::unique_lock<std::mutex> lock(mtx);
        cv.wait(lock, []{ return ready; });
    }

    std::cout << "工作已完成" << std::endl;

    worker.join();

    return 0;
}

在上述代码中,主线程创建了一个工作线程,并使用条件变量和互斥锁等待工作线程完成工作。工作线程完成工作后,通过修改共享变量ready的值,并调用notify_one()通知主线程。主线程在等待期间会一直阻塞,直到收到通知并满足条件后才会继续执行。

这种方式可以避免使用while循环轮询的方式来等待将来(True),提高了效率并减少了资源的占用。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云容器服务(TKE)。

  • 腾讯云云服务器(CVM):提供弹性计算能力,可根据业务需求快速创建、部署和扩展云服务器实例。详情请参考:腾讯云云服务器
  • 腾讯云容器服务(TKE):基于Kubernetes的容器管理服务,提供高可用、弹性伸缩的容器集群管理能力,方便部署和管理容器化应用。详情请参考:腾讯云容器服务

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和情况进行。

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

相关·内容

没有搜到相关的视频

领券