一 生产者消费者:
std::mutex mu; deque<int> q; condition_variable CR; void produce() { int count = 10; while (count>0) { unique_lock<mutex> lock(mu); cout << " product 生产了" << count << endl; q.push_front(count); lock.unlock(); CR.notify_all(); Sleep(1); count--; } } void consume() { int data = 0; while (data!=1) { unique_lock<mutex> lock(mu); CR.wait(lock, [](){return !q.empty(); }); data = q.back(); q.pop_back(); lock.unlock(); cout << "consumer got a value from product" << data << endl; } } int main() { thread T1(produce); thread T2(consume); T1.join(); T2.join(); } 二 循环打印ABC
std::mutex mu; void A() { for (int i = 0; i < 10; i++) { lock_guard<mutex> lock(mu); cout << 'A'; Sleep(10); } } void B() { for (int i = 0; i < 10; i++) { lock_guard<mutex> lock(mu); cout << 'B'; Sleep(10); } } void C() { for (int i = 0; i < 10; i++) { lock_guard<mutex> lock(mu); cout << 'C'; Sleep(1); } } int main() { thread T1(A); thread T2(B); thread T3(C); T1.join(); T2.join(); T3.join(); }