Linux多线程服务器编程:使用muduo C++ 网络库
阅读《Linux多线程服务器编程》时记录下的笔记
C++多线程系统编程
线程安全的对象生命期管理
多线程编程中,构造函数中不要把this传出去,半构造的对象可能带来不可预计的后果,即使是构造函数的最后,因为它可能作为基类,基类构造完了,不代表子类构造结束了。
这种情况下往往需要二段式构造,需要一个额外的initialize函数。既然允许二段式构造,那也不必在构造函数中抛出异常,而可以根据initialize函数的返回值确认构造是否正常。
使用成员变量mutex不能够保护析构函数,因为析构函数会把mutex析构,此时如果有其他函数被mutex拦住,将发生未定义行为。
遇到要对多个物体加锁的场景,尤其是物体由参数传入时,要注意加锁顺序,可以通过比较地址大小决定加锁顺序。
Linux多线程服务器编程:使用muduo C++ 网络库
https://jhex-git.github.io/posts/3669776500/