赞
踩
编写一个程序,开启三个线程,这三个线程按照顺序依次打印ABC,每个字母打印10次后结束,最后结果如 ABCABCABC… 依次递推
#include<bits/stdc++.h> using namespace std; std::mutex mtx; std::condition_variable cv; char arr[] = {'a', 'b', 'c'}; char message = 'a'; void test(int i){ for (int j = 0; j < 10; ++j) { std::unique_lock<std::mutex> lk(mtx); cv.wait(lk, [=]{ return message == arr[i];}); std::cout << arr[i]; message = arr[(i + 1) % 3]; lk.unlock(); cv.notify_all(); } } int main(int argc, char **argv) { std::thread t[3]; for (int i = 0; i < 3; ++i) { t[i] = std::thread(test, i); } for (int i = 0; i < 3; ++i) { t[i].join(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。