templateclass LockFreeStack{private: struct Node { std::shared_ptr data; Node* next; Node(T const& value): ...
分类:
其他好文 时间:
2015-09-30 10:58:05
阅读次数:
165
templateclass ThreadsafeList{ struct Node { std::mutex m; std::shared_ptr data; std::unique_ptr next; Node(): ...
分类:
编程语言 时间:
2015-09-29 09:49:25
阅读次数:
237
templateclass ThreadsafeQueue{private: struct Node { std::shared_ptr data; std::unique_ptr next; }; std::unique_...
分类:
编程语言 时间:
2015-09-26 10:24:56
阅读次数:
232
#include #include using namespace std;#includeclass sp_base{public: virtual void del(void* obj) = 0; void inc_ref(){ ref_count_++; } ...
分类:
编程语言 时间:
2015-09-21 14:12:27
阅读次数:
264
(一)在一项条款说法auto_ptr和tr1::share_ptr适合heap-based资源。然而,并非所有的资源都heap-based的。换句话说不tr1::shared_ptr 和 auto_ptr 总是适合作为资源管理器。管理类型。如果Mutex类型通过lock和unlock两组函数进行相互...
分类:
编程语言 时间:
2015-09-19 19:31:49
阅读次数:
280
最近观看Boost库源代码。Boost功能强大的库,但它的许多源代码,十一细读太费时间,毕竟,还有其他东西要学。所以我决定脱脂感兴趣的章节,他们的设计思路和难以理解的地方记录。shared_ptr是Boost里面最有价值的的智能指针。它封装了一个原生态指针和一个引用计数器,这个引用计数器是一个类sh...
分类:
其他好文 时间:
2015-09-14 15:15:15
阅读次数:
262
1. "智能指针"是行为像指针的对象,但它们能提供指针没有的功能:shared_ptr,weak_ptr,auto_ptr(见条款13)实现对堆内存的自动管理,STL的迭代器实现对整个容器的遍历等. 真正的指针的优势在于支持继承层次中派生类指针向基类指针的转换(当然标准库shared_ptr,we....
分类:
编程语言 时间:
2015-09-11 20:54:12
阅读次数:
206
智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游戏...
分类:
Web程序 时间:
2015-09-09 21:21:26
阅读次数:
161
代码: #include <memory> #include <iostream> int main(int argc, char*argv[]){ ? ? std::shared_ptr<int> a(new int(1)); ? ? std::weak_ptr<int>d(a); ? ? std::cout<<"d.use_count() = "<<d.use_cou...
分类:
其他好文 时间:
2015-09-09 19:53:59
阅读次数:
211
Item 14: Think carefully about copying behavior in resource-managing classes.
在Item 13:使用对象来管理资源中提出了基于RAII的资源管理对象,auto_ptr和shared_ptr。
智能指针可以有不同的拷贝策略。当你实现这样一个资源管理对象时,需要特别注意。比如一个典型的RAII风格的互斥锁实现:...
分类:
编程语言 时间:
2015-08-27 11:14:40
阅读次数:
205