C++ 11相关知识学习

std::mutex

std::mutex定义在<mutex>头文件中。
mutex类是一个同步原型,用来保护共享数据被多个线程同步访问的同步。mutex提供互斥,非递归拥有权语义:

  • 一个调用线程拥有一个mutex。从它成功调用lock或者try_lock,直到它调用unlock。
  • 当一个线程拥有一个mutex,所有其它的线程如果想要尝试获得mutex的拥有权,则会接收一个false,或者被block(当调用lock时)。
  • 一个线程在它调用lock或try_lock之前不能拥有mutex的所有权。
当mutex被销毁,但是它仍然属于其他线程时,或者说一个线程被终止,但是它拥有mutex时,程序的行为是未定义的。

std::mutex既不能copy,也不能move。

Locking

lock           锁定mutex,如果mutex不可达,则block
try_lock     尝试锁定mutex,如果mutex不可达,则返回
unlock       解锁mutex


std::thread

thread();  创建新的线程对象,但是并不代表一个线程
thread(thread&& other);  Move constructor. 

std::thread::join  阻塞当前线程,知道被 *this 识别的线程结束它的执行。

std::thread::detach 将线程执行与线程对象隔离,允许无依赖地继续执行。当现成退出,任何获取的资源都会被释放。
当调用完detach,*this就不再属于任何线程了。


std:lock_guard


在<mutex>中定义。类lock_guard是一个mutex wrapper,提供了一个方便的RAII-style机制,用来在scoped block的持续时间拥有一个mutex。
当一个lock_guard对象被创建后,它尝试去获得给定的mutex的所有权。当控制离开lock_guard对象被创建所在的范围,lock_guard对象就被销毁,并且mutex被释放。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值