个人开发基本原则

cpp

构造函数

  • 不要在构造函数中注册任何回调;
  • 不要在构造函数中把 this 传给跨线程的对象
    1
    因为在构造函数执行期间对象还没有完成初始化,如果 this被泄露(escape)给了其他对象(其自身创建的子对象除外),那么别的线程有可能访问这个半成品对象,这会造成难以预料的后果

    智能指针

  • shared_ptr 是管理共享资源的利器,需要注意避免循环引用,通常的做法是 owner 持有指向 child 的 shared_ptr, child 持有指向 owner 的 weak_ptr。
  • std::bind 拷贝的是实参类型,不是形参类型

c

linux

  • /usr/include/netinet/tcp.h 中的 tcp_info 获取连接的状态数据信息