0 引言
本文主要是根据C++ Concurrency in Action (豆瓣)第6章的基于锁的数据结构来讲解相应的队列实现。
本文会给出两种队列
- 基于STL的queue的线程安全队列
- 基于链表的线程安全队列
1 预备知识
如何实现一个线程安全的队列?需要遵循什么样的准则?
可参考:
C++多线程--发现接口间固有竞争_qls315的博客-CSDN博客
C++11多线程--线程间共享数据(存在的问题)_qls315的博客-CSDN博客
C++11多线程--使用锁(mutex)保护数据(1)-CSDN博客
总结起来如下:
- 确保对象的不变量保持不被破坏
- 确保程序不会出现死锁
- 保证临界区尽量小,并发度尽量高
- 考虑接口间的固有竞争