muduo学习之线程

知识点来源于陈硕的《Linux多线程服务端编程》以及一些博客。

竞态条件(race condition)

  • 在即将析构一个对象时,如何得知是否有别的线程正在使用该对象的成员函数?
  • 如何保证在执行对象的成员函数时,该对象不会在别的线程被析构?
  • 在调用某个对象的成员函数时,如何判断该对象存活?

线程安全

一个线程安全的class应该满足以下三个条件

  • 多个线程同时访问时,其表现出正确的行为。
  • 无论操作系统如何调度这些线程,无论这些线程的执行顺序如何交织(interleaving)。
  • 调用端代码无需额外的同步或其他协调操作

对象构造做到线程安全

唯一要求:构造期间不要泄露this指针

  • 不要在构造函数中注册任何回调
  • 不要在构造函数中把this传给跨线程的对象
  • 即便在构造函数最后一行也不行

封装MutexLock、MutexLockGuard、Condition

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务