随笔分类 -  C++

上一页 1 2 3

摘要:1、shared_ptr共享智能指针 std::shared_ptr使用引用计数,每个shared_ptr的拷贝都指向相同的内存,在最后一个shared_ptr析构的时候,内存才会释放。 1.1 基本用法 1.1.1 初始化 shared_ptr可以通过make_shared来初始化,也可以通过sh 阅读全文

posted @ 2021-04-02 16:41 tycoon3 阅读(299) 评论(0) 推荐(0)

摘要:override 关键字 作用:在成员函数声明或定义中, override 确保该函数为虚函数并覆写来自基类的虚函数。位置:函数调用运算符之后,函数体或纯虚函数标识 “= 0” 之前。 使用以后有以下好处:1.可以当注释用,方便阅读.2.告诉阅读你代码的人,这是方法的复写.3.编译器可以给你验证 o 阅读全文

posted @ 2021-04-01 19:43 tycoon3 阅读(1113) 评论(0) 推荐(0)

摘要:#include <iostream> #include <unordered_set> int main() { std::unordered_set<int> X { 2020, 2019, 2018 }; X.insert(19); X.insert(99); X.insert(89); X. 阅读全文

posted @ 2021-04-01 11:47 tycoon3 阅读(117) 评论(0) 推荐(0)

摘要:Lambda 表达式不仅具有函数指针的灵活性,还可以通过捕获局部变量提高可扩展性。本文介绍 Lambda 表达式的语法和用法。 简介 Lambda 可能是最新的 C++11 标准的典型特性之一。Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参 阅读全文

posted @ 2021-04-01 10:43 tycoon3 阅读(222) 评论(0) 推荐(0)

摘要:enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为: template< class T > class enable_shared_from_this; std::enable_shared_from_this 能让一个对象(假设其名为 t ,且已被 阅读全文

posted @ 2021-03-31 18:00 tycoon3 阅读(340) 评论(0) 推荐(0)

摘要:memory order (3.1) 对应GCC的memory-order/memory-mode Memory Barrier 内存栅栏是一个令 CPU 或编译器在内存操作上限制内存操作顺序的指令,通常意味着在 barrier 之前的指令一定在 barrier 之后的指令之前执行。 在 C11/C 阅读全文

posted @ 2021-03-31 17:00 tycoon3 阅读(326) 评论(0) 推荐(0)

摘要:Tars介绍 Tars是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年的实践成果总结而成的开源项目。是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。 阅读全文

posted @ 2021-03-31 09:58 tycoon3 阅读(580) 评论(0) 推荐(0)

摘要:C/C++中的NULL到底是什么 我们查看一下C和C++的源码,不难发现: NULL在C++中的定义NULL在C++中被明确定义为整数0: /* Define NULL pointer value */ #ifndef NULL #ifdef __cplusplus #define NULL 0 # 阅读全文

posted @ 2021-03-30 17:12 tycoon3 阅读(125) 评论(0) 推荐(0)

摘要:auto_ptr 在 C++98 开始推出 auto_ptr 管理裸指针,让开发者不需要手动释放指针内存,当生命周期结束时自动释放内存。但是 auto_ptr 在转移所有权会出现野指针导致崩溃。 root@ubuntu:~/c++# cat ptr.cpp #include <iostream> # 阅读全文

posted @ 2021-03-30 16:08 tycoon3 阅读(172) 评论(0) 推荐(0)

摘要:td::thread 各种构造函数例子如下: #include <iostream> #include <utility> #include <thread> #include <chrono> #include <functional> #include <atomic> void f1(int 阅读全文

posted @ 2021-03-30 15:27 tycoon3 阅读(148) 评论(0) 推荐(0)

摘要:C++11 中引入 std::ref 用于取某个变量的引用,这个引入是为了解决一些传参问题。 我们知道 C++ 中本来就有引用的存在,为何 C++11 中还要引入一个 std::ref 了?主要是考虑函数式编程(如 std::bind)在使用时,是对参数直接拷贝,而不是引用。下面通过例子说明 示例1 阅读全文

posted @ 2021-03-30 15:19 tycoon3 阅读(1165) 评论(0) 推荐(0)

摘要:#include <iostream> #include<string> #include<sstream> #include<vector> using namespace std; #define MAX_NUM 1000 int string_to_num(string & str) { in 阅读全文

posted @ 2021-03-30 14:56 tycoon3 阅读(115) 评论(0) 推荐(0)

摘要:C++11标准新特性 右值引用(Rvalue Reference)是C++11标准引入的特性,它实现了转移语义和精确传递,主要的作用有2个方面: 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率; 能够更简洁明确地定义泛型函数; 左值引用和右值引用 首先区分什么是左值引用和右值引用,简 阅读全文

posted @ 2021-03-30 12:02 tycoon3 阅读(348) 评论(0) 推荐(0)

摘要:x86平台 CompareAndSwap实现如下所示 #define barrier() __asm__ __volatile__("": : :"memory") int CompareAndSwap(volatile int* ptr, int old_value, int new_value) 阅读全文

posted @ 2021-03-17 17:50 tycoon3 阅读(280) 评论(0) 推荐(0)

摘要:单核 vs 多核 从多核的视角上来说,是存在着乱序的可能的。比如,假设存在变量x = 0,cpu0上执行写入W0(x, 1),对x写入1。接着在cpu1上,执行读取R1(x, 0),得到x = 0,这在x86和arm/power的cpu上都是可能出现的。原因是x86上cpu核和cache以及内存之间 阅读全文

posted @ 2021-03-17 17:42 tycoon3 阅读(1556) 评论(0) 推荐(0)

摘要:gcc 编译为汇编代码 原始C++代码如下: #include<atomic> using namespace std; atomic<int> a; int j; int main() { int n; a.store(1,memory_order_acquire); n = j; return 阅读全文

posted @ 2021-03-17 16:20 tycoon3 阅读(667) 评论(0) 推荐(0)

摘要:在 16 位环境下,short 的长度为 2 个字节,int 也为 2 个字节,long 为 4 个字节。16 位环境多用于单片机和低级嵌入式系统,在PC和服务器上已经见不到了。对于 32 位的 Windows、Linux 和 Mac OS,short 的长度为 2 个字节,int 为 4 个字节, 阅读全文

posted @ 2021-03-16 15:34 tycoon3 阅读(861) 评论(0) 推荐(0)

摘要:CPU 亲和性 Linux 可以运行在多处理器的机器上,为了维持多个CPU之间的负载均衡,线程可能会被OS调度到其它CPU上,这种情况下线程就无法利用原先CPU上边的缓存了,也就降低了CPU cache的命中率了。所谓的CPU亲和性,就是让线程在指定的CPU上长时间运行而不被调度到其它CPU上边,以 阅读全文

posted @ 2021-03-16 11:43 tycoon3 阅读(161) 评论(0) 推荐(0)

摘要:为什么需要 Memory Order 如果不使用任何同步机制(例如 mutex 或 atomic),在多线程中读写同一个变量,那么,程序的结果是难以预料的。简单来说,编译器以及 CPU 的一些行为,会影响到程序的执行结果: 即使是简单的语句,C++ 也不保证是原子操作。 CPU 可能会调整指令的执行 阅读全文

posted @ 2021-03-16 10:05 tycoon3 阅读(262) 评论(0) 推荐(0)

上一页 1 2 3

导航