摘要: C++11 标准中引入了内存模型,其目的是为了解决多线程中可见性和顺序(order)。这是c++11最重要的新特征,标准忽略了平台的差异,从语义层面规定了6种内存模型来实现跨平台代码的兼容性。多线程代码因为其本身的复杂性问题,有引入死锁和race condition等一系列问题,可能造成的后果有cr 阅读全文
posted @ 2019-07-25 17:34 kkshaq 阅读(420) 评论(0) 推荐(0) 编辑
摘要: c++是C的超集,不可避免的要兼容C的特性,C++在C基础山的拓展部分叫做C with class,同时C++有自己特有的属性比如模板template. C并不完全是C++的子集. 那么如何在C/C++中设计接口,实现相互调用呢?我们经常在C++代码中看见extern C的语句,那么其目的是什么呢? 阅读全文
posted @ 2019-07-19 14:09 kkshaq 阅读(3587) 评论(0) 推荐(0) 编辑
摘要: multiple threads synchronization primitive: 多线程同步语义 多线程的同步语义是多线程编程的核心,线程之间通过同步语义进行通信,实现并发。C++ JAVA 中线程同步的基本原语是condition variable 和mutex构成的管程 ,OS操作系统课程 阅读全文
posted @ 2019-05-09 17:06 kkshaq 阅读(528) 评论(0) 推荐(0) 编辑
摘要: Linux 中线程和进程切换的开销: Linux 操作系统层面的进程和线程的实现都是task_struct描述符. task_struct 包含成员变量:内核态stack. 这些都存在3-4G虚拟地址空间的内核态空间中。内核栈用于保存各个寄存器值:CS,DS,SS等. os层面的线程进程切换,都是在 阅读全文
posted @ 2019-05-08 16:47 kkshaq 阅读(237) 评论(0) 推荐(0) 编辑
摘要: c++ 的初始化过程比较复杂:根据对象的storage duration来分类。所谓storage duration是对象而言的,Storage duration is the property of an object that defines the minimum potential life 阅读全文
posted @ 2019-03-15 16:06 kkshaq 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 完美转发是c++11 引入右值引用之后,在template 中的延伸. 顾名思义,完美转发是将参数不改变属性的条件下,转发给下一个函数. 因为普通函数的参数一旦具名,始终都是lvalue. 如果把rvalue转发到下一个函数上的参数中,还是rvalue.这就是完美转发的目的。 那么如何支持完美转发呢 阅读全文
posted @ 2019-02-27 17:19 kkshaq 阅读(201) 评论(0) 推荐(0) 编辑
摘要: C++11 引入了右值引用的概念,由此在引出 an rvalue reference to a cv-unqualified template parameter. 在template function 推导中,我们需要推导出template parameter. 那么template functi 阅读全文
posted @ 2019-02-27 15:01 kkshaq 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 缓存的适用场景: 缓存的目的是提高访问速度,减少不必要的开销,提高性能。那什么样的场景适用于缓存呢。试想一个多项式的计算是一个CPU bound的操作,如果频繁调用同一个多项式的结果。显然缓存结果是一个提高性能的方法。减少了不必要的CPU开销。另外就是提高访问速度。启动的时候,需要加载DB的数据到内 阅读全文
posted @ 2019-02-26 17:16 kkshaq 阅读(1155) 评论(0) 推荐(0) 编辑
摘要: 本质的原因:raw data和引用计数的管理块,可能是分开的 使用场景: 需要在对象中得到shared ptr, 错误的代码:直接构造新的shared_ptr<A>对象,两个shared_ptr objects 是独立的,pointer to the same raw mem. 两个独立的manag 阅读全文
posted @ 2019-02-25 13:09 kkshaq 阅读(1035) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/jason-yang/archive/2012/04/26/2472755.html今天在网上看到一个大数相乘的问题,题目是这样的:输入两个整数,要求输出这两个数的乘积。输入的数字可能超过计算机内整形数据的存储范围。分析:由于数字无法用一个整形变量存储,... 阅读全文
posted @ 2015-09-12 14:02 kkshaq 阅读(253) 评论(0) 推荐(0) 编辑