随手记

1. 如果base class的构造函数中调用了虚函数,子类在构造时候调用的是谁的虚函数呢?

   调用的是base class的虚函数,因为在子类构造时先调用base class的构造,此时子类还没构造,所以就是纯粹的父类的构造,

   可以理解成此时vptr还是父类的虚函数表,子类的内容还没改呢。

   而且在子类成员还没构造的时候也不能调用子类的方法。

   可以说vptr一开始是父类的,在构造子类成员时才会检查虚函数表,对重写的进行替换。

 

2. 通过初始化列表进行初始化

   int a{}; double d{};

   像这样的写法,会用这个类型的默认值去初始化,int是0, double是0.0, 在class的成员变量设置默认值时除非有特殊默认值,随手写一个{}也是一个好习惯。

 

3. 

当要同时操作2个对象时,就需要同时锁定这2个对象,而不是先锁定一个,然后再锁定另一个。同时锁定多个对象的方法:std::lock(对象1.锁,对象2.锁...)

额外说明:lock_guard<mutex> lock_a(d1.m, std::adopt_lock);

上面这句是为了解开std::lock的锁。

参数std::adopt_lock的作用:告诉lock_guard,d1.m已经被上锁了,你不要再去锁它了,沿用它原来的锁就好。

 

4.condition_variable在notify的时候不需要在锁的保护下

5. reactor模型是在回调函数之前通知可以执行了,而proactor模型是回调函数执行完毕才会通知,相比之下proactor模型需要事先准备好回调函数的资源,占用资源更多

6. 关于boost库asio:https://m.w3cschool.cn/nlzbw/nlzbw-3vs825ya.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值