C++ Concurrency
Date: . Last updated: .
Link
多线程编程
- C++并发编程(中文版)(C++ Concurrency In Action)
- MultiThread
- c++中的多线程:概念、基本用法、锁以及条件变量和优先级调度策略
- C++11 并发指南系列
- adopt_lock和defer_lock的区别
条件变量
- 虛假喚醒(spurious wakeups)的原因
- 条件变量的虚假唤醒问题
- C++併發編程之線程同步 std::condition_variable用法總結
- C++ Core Guidelines: Be Aware of the Traps of Condition Variables
多线程
- 互斥(资源同一时刻只能被一个进程使用)
- 请求并保持(进程在请求资源时,不释放自已经占有的资源)
- 不可剥夺(进程已经获得的资源,在进程使用前,不能强制剥夺)
- 循环等待(进程间形成环状的资源循环等待关系)
- 切勿将受保护数据的指针或引用传递到互斥锁作用域之外,无论是 函数返回值,还是存储在外部可见内存,亦或是以参数的形式传递到用户提供的函数中去。
- 避免嵌套锁
- 避免在持有锁时调用用户提供的代码
- 使用固定顺序获取锁