C++ 并发入门:以 LeetCode 1114 为例
C++ 并发入门:以 LeetCode 1114 为例 题目 直接做题:1114 按序打印 解法 1. std::mutex 如果你对 c++ 11 略为熟悉的话,应该能够想到用 std::mutex 来解这道题,在函数构造时(主线程)对 std::mutex 进行 lock,然后在各个线程调用的函数中依次对 std::mutex 对象进行 unlock: class Foo { mutex mtx1, mtx2; public: Foo() { mtx1.lock(), mtx2.lock(); } void first(function<void()> printFirst) { printFirst(); mtx1.unlock(); } void second(function<void()> printSecond) { mtx1.lock(); printSecond(); mtx1.unlock(); mtx2.unlock(); } void third(function<void()> printThird) { mtx2.lock(); printThird(); mtx2.unlock(); } }; Mutex 即 mutual exclusion,是用来防止多个线程同时访问共享资源对象的机制,在同一时间只有一个线程可以拥有一个 mutex 对象,其他线程调用 std::mutex::lock 函数时会阻塞直到其获取锁资源。 ...