上次面试被问到用三个线程循环打印一串字符串,当时没答好,现在一想其实挺简单的,只要用条件变量就好了。使用C++11的标准线程语法,用一个int变量控制条件变量的wait()阻塞等待时机,用notify_all()唤醒条件变量。
具体的代码如下,3个线程分别打印ABC,循环10次:
#include <iostream> #include <thread> #include <condition_variable> std::mutex mtx; std::condition_variable cv; int ready = 0; void PrintString_1() { std::unique_lock<std::mutex> lk(mtx); int cnt = 0;