mez*_*hic 2 c++ memory-management shared-ptr make-shared c++11
据我所知,如果你使用std::make_shared它,它会在底层对象的同时创建引用计数对象.
但是,如果smart_ptr指向的对象指针大于56字节,那么引用计数器最终不会位于不同的高速缓存行中(因为高速缓存行是64字节)?
注:该高速缓存行是不是每一个平台上相同的大小,也不是一个指针总是相同的尺寸..小心使得基于问题的数字假设.
为什么std::make_shared?
std::make_shared 存在三个(主要)原因;
std::shared_ptr;缓存行std::make_shared怎么样?
老实说,这超出了范围和目的std::make_shared.C++标准不知道" 缓存行 "是什么,标准中描述的设计是在不针对任何特定平台的情况下编写的.
即使存在*cache-misse*s因为ref-counter和对象不能放在同一个缓存行中,我们仍然具有之前列出的所有好处,并且std::make_shared仍然可以完成它要解决的工作.
注意:可以说"保持参考计数器和物体在记忆中靠近在一起"只是一个可爱的小奖励.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |