多线程编程
线程局部变量
[参考1](https://blog.csdn.net/cywosp/article/details/26469435)
[参考2](https://blog.csdn.net/vevenlcf/article/details/77882985)
知识点
1. 概念:竞争条件、死锁条件等
2. 锁、原子操作
3. violate,编译器优化等
4. 无锁队列及常见问题
条件变量
bool condi = false; // global val
mtx.lock(); // 1
while( ! condi ){ // 2
mtx.unlock(); // 3
// 4 线程挂起等待,指导条件满足通知
// 5 重新获取锁
}
// 6 操作临界区
mtx.unlock() // 7
说明:
1. 1判断条件状态是否满足和访问临界区必须加锁
2. 2~4 条件不满足时,当前线程释放所,进入等待状态,阻塞在4
3. 使用while不使用if的原因:线程可能在不满足条件情况下被唤醒;如,多个线程被唤醒时,其中一个拿到锁改了条件状态。