christina

第29课 互斥量与自解锁(std::mutex和lock系列)

北战南征 提交于 2019-12-04 17:55:48
一. 互斥量 (一)Mutex系列类   1. std::mutex:独占的互斥量, 不能递归使用 。   2. std::recursive_mutex: 递归互斥量 。允许同一线程多次获得该互斥锁,可以用来解决同一线程需要多次获取互斥量时死锁的问题。   3. std::time_mutex和std::recursive_time_mutex: 带超时的互斥量 。 前者是超时的独占锁,后者为超时的递归锁 。主要用于获取锁时增加超时等待功能,因为有时不知道获取锁需要多久,为了不至于一直等待下去,就设置一个等待超时时间。比std::mutex多了两个超时获取锁的接口:try_lock_for和try_lock_until //1. 独占互斥锁,不能递归使用 class mutex { public: //std::mutex不支持copy和move操作。 mutex(const mutex&) = delete; mutex& operator=(const mutex&) = delete; constexpr mutex() noexcept; //构造函数:新的对象是未锁的 ~mutex(); void lock(); //上锁 void unlock(); //解锁 bool try_lock(); //尝试上锁。成功,返回true。失败时返回false,但不阻塞