面试高频之C++多线程顺序启动逆序执行

#include 
#include 
#include 
#include 

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

void threadB() {
    std::cout << "B" << std::endl;
    // 标记 B 线程已完成
    {
        std::lock_guard<std::mutex> lock(mtx);
        isBFinished = true;
    }
    // 通知等待的线程(A线程)
    cv.notify_one();
}

void threadA() {
    // 等待 B 线程完成
    {
        std::unique_lock<std::mutex> lock(mtx);
        cv.wait(lock, [] { return isBFinished; });
    }
    // 输出 A
    std::cout << "A" << std::endl;
}

int main() {
    std::thread tB(threadB);
    std::thread tA(threadA);

    tB.join();
    tA.join();

    return 0;
}

你可能感兴趣的:(面试,算法,c++)