Linux多线程服务器编程:使用muduo C++ 网络库

阅读《Linux多线程服务器编程》时记录下的笔记

C++多线程系统编程

线程安全的对象生命期管理

多线程编程中,构造函数中不要把this传出去,半构造的对象可能带来不可预计的后果,即使是构造函数的最后,因为它可能作为基类,基类构造完了,不代表子类构造结束了。

这种情况下往往需要二段式构造,需要一个额外的initialize函数。既然允许二段式构造,那也不必在构造函数中抛出异常,而可以根据initialize函数的返回值确认构造是否正常。

使用成员变量mutex不能够保护析构函数,因为析构函数会把mutex析构,此时如果有其他函数被mutex拦住,将发生未定义行为。

遇到要对多个物体加锁的场景,尤其是物体由参数传入时,要注意加锁顺序,可以通过比较地址大小决定加锁顺序。


Linux多线程服务器编程:使用muduo C++ 网络库
https://jhex-git.github.io/posts/3669776500/
作者
JointHex
发布于
2023年2月25日
许可协议