白天是个程序员,晚上就是个有抱负的演员,这是就是我,我住在天朝的陪都。

std::lock_guard 与 std::unique_lock

(1)unique_lock。
unique_lock ulk(g_mtx1);
线程没有 g_mtx1 的所有权,根据块语句的循环实现自动加解锁。
线程根据 g_mtx1 属性,来判断是否可以加锁、解锁。
(2)lock_guard。
lock_guard lckg(g_mtx2);
线程拥有 g_mtx2 的所有权,实现自动加解锁。
线程读取 g_mtx2 失败时,则一直等待,直到读取成功。
线程会把 g_mtx2 一直占有,直到当前线程完成才释放,其它线程才能访问。

添加新评论

咻~