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

C++线程问题 - 设置一个值以指示线程已完成

在C++中,线程问题可能涉及到多个线程之间的同步和通信。设置一个值以指示线程已完成可以通过使用条件变量和互斥量来实现。

以下是一个简单的示例,展示了如何使用C++11线程库中的条件变量和互斥量来实现线程同步:

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

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

void worker_thread() {
    // 执行一些任务...

    // 设置一个值以指示线程已完成
    std::unique_lock<std::mutex> lock(mtx);
    is_finished = true;
    cv.notify_one();
}

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

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

    std::cout << "Thread finished."<< std::endl;

    worker.join();
    return 0;
}

在这个示例中,我们使用了一个布尔变量is_finished来指示线程已完成。当线程完成其任务时,它会将该变量设置为true,并通过调用cv.notify_one()通知等待的线程。在主线程中,我们使用cv.wait()来等待线程完成,并在is_finished变量为true时继续执行。

这只是一个简单的示例,实际应用中可能需要更复杂的同步和通信机制。

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

相关·内容

没有搜到相关的沙龙

领券