Queue 实现的实际上是一个队列,有进有出,它实现了很多对线程友好的API offer、peek、poll,他的一个子类型叫 BlockingQueue对线程友好的API又添加了put和take,这两个实现了阻塞操作,这个是在其他的List、 Set里面都是没有的。这里面最重要的就是是叫做阻塞队列,它的实现的初衷就是为了线程池、高并发做准备的。
volatile只是保证可见性,不用于保证线程安全,线程安全只能使用原子变量或者加锁 参考:https://www.ibm....
任何被volatile修饰的变量,都不拷贝副本到工作内存,任何修改都及时写在主存
shared_ptr的计数器底层是怎么实现的?(我不知道,面试官说没关系按照你自己的理解你会怎么设计,我就回答,用一个哈希表,存放资源地址和对应的指针) 那这个哈希表是全局的吗?是线程安全的吗?(是全局的,关于线程安全,我就说给他加锁) shared_ptr的循环引用问题怎么解决的?
在使用单例模式时,我们必须使用单例类提供的公有工厂方法得到单例对象,而不应该使用反射来创建,否则将会实例化一个新对象。此外,在多线程环境下使用单例模式时,应特别注意线程安全问题,我在下文会重点讲到这一点。 三. 多线程环境下单例模式的实现