boost锁的概念:
1.lockable :指有try_lcok() method.
2.sharedlockable: This is the standard multiple-reader / single-write model,允许至多一个线程拥有独享权,此时其他任何线程都不能有独享或共享权,反之,多个线程可以同时拥有共享权
3.upgradabelock:建立于 SharedLockable之上,允许存在升级权限,共享权限和独享权限。
一个线程在其他线程都只有共享权限时可以拥有升级权限,拥有升级权限的线程在任何时候都可以将权限升级为独享,如果没有其他线程拥有共享权,升级可以马上完成,此时线程拥有独享权,释放时必须通过unlock()
如果拥有升级权限的线程在升级的时候还有其他线程拥有共享权,升级将被阻塞直到最终获取到独享权限
4.lock guard : 构造时加锁,析构时解锁且没有其他成员函数.
锁的类型:
strick_lock:构造时加锁,析构时解锁并且没有提供其他任何锁调用函数,只提供了一个owns_lock()以查询是否拥有某一个互斥对象
1.unique_lock:非线程安全
2.shared_lock:非线程安全
3.upgrade_lock: