摘要: 编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的mutex保护。 race condition:在即将析构一个对象时,从何而知此刻是否有别的线程正在执行该对象的成员函数?如何保证在执行成员函数期间,对象不会在另一个线程被析构?在调用某个对象的成员函数之前如何 阅读全文
posted @ 2023-09-01 19:47 stu--wy 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 并发编程有两种基本模型:message passing & shared memory。 线程同步的四项原则: 首要原则是最低限度的共享对象,减少需要同步的场合,一个对象能不暴露给别的线程就不要暴露,如果要暴露,优先考虑immutable对象,实在不行才暴露可修改的对象,并用同步措施来充分保护它。 阅读全文
posted @ 2023-09-01 19:47 stu--wy 阅读(9) 评论(0) 推荐(0) 编辑
摘要: STL中算法 是 function template。 算法看不见容器,对其一无所知,所以它所需要的一切信息都必须从itertor取得,而iterators(由容器提供)必须能够回答算法的所有提问,才能搭配该算法的所有操作。 迭代器的分类: struct input_iterator_tag {}; 阅读全文
posted @ 2023-08-24 20:38 stu--wy 阅读(2) 评论(0) 推荐(0) 编辑
摘要: vector 容器的增长是当容量不够时,就找到一块二倍大的空间,将原来的内容复制到新空间。每一次复制伴有大量的拷贝构造和析构函数的调用,开销大。vector 里面有 begin end end_of_storge 三个迭代器(指针)。 list本质是一个双向链表,list类模版里面含有迭代器,lis 阅读全文
posted @ 2023-08-24 20:10 stu--wy 阅读(3) 评论(0) 推荐(0) 编辑
摘要: STL六大部件 容器 (class template) 分配器(为容器服务,class template) 算法 (function template) 迭代器(泛化的指针,容器和算法之间的桥梁)(class template) 适配器 (class template) 仿函数 (class tem 阅读全文
posted @ 2023-08-24 20:10 stu--wy 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 相关数据结构:blocks,super-blocks,bitmap,mini-vector block:分配单元,super-block:管理单元 super_block_size = usecount + bitmap + blocks * block_size mini-vector 是控制单元 阅读全文
posted @ 2023-08-23 15:37 stu--wy 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 三个class,第一层是chunk,第二层是vector<chunk> FixedAllocator,第三层是vector<vector<chunk>> SmallObjallocator。第一层的chunk负责实际内存的管理,一个chunk管理一个unsigned char[blockSize * 阅读全文
posted @ 2023-08-23 10:10 stu--wy 阅读(8) 评论(0) 推荐(0) 编辑
摘要: static static函数没有this pointer,static数据只有一份,static函数只能处理static数据。static数据在class外需要提供定义。 单例设计 class A{ public: static A& getInstance(); setup() {...} pr 阅读全文
posted @ 2023-08-22 15:25 stu--wy 阅读(18) 评论(0) 推荐(0) 编辑
摘要: Object Based:面对的是单一class的设计;Object Oriented:面对的是多重classes的设计,classes和classes之间的关系。 class 前向声明,声明,定义。 函数若在class body中定义完成,便自动成为inline函数。如果函数太复杂就不会成为inl 阅读全文
posted @ 2023-08-22 15:25 stu--wy 阅读(6) 评论(0) 推荐(0) 编辑
摘要: new的动作:默认调用全局operator new ,指针转型,构造。delete的动作:析构,然后默认调用全局operator delete。全局的operator new & 全局的operator delete 就是做malloc & free。如果operator new & operato 阅读全文
posted @ 2023-08-22 15:23 stu--wy 阅读(42) 评论(0) 推荐(0) 编辑