在没有while循环的情况下,在主线程中等待将来(True),可以使用条件变量和互斥锁来实现。
条件变量是一种线程间的同步机制,它允许一个线程等待另一个线程满足某个条件后再继续执行。互斥锁用于保护共享资源,确保在同一时间只有一个线程可以访问该资源。
以下是使用条件变量和互斥锁实现的C++代码示例:
#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)。
请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和情况进行。
领取专属 10元无门槛券
手把手带您无忧上云