线程原语的选用

不直接使用Pthreads,而是使用更为易用的wrapper,封装下面的调用

  • 线程的创建和等待结束
  • mutex的创建、销毁、加锁、解锁
  • 条件变量的创建、销毁、等待、通知、广播

在这些wrapper之上进一步构建线程同步组件

  • ThreadPool
  • CountDownLatch
  • BlockingQueue (有界/无界)
  • ...

多线程编程需要注意的地方

C++标准库容器和std::string都不是线程安全的
iostream不是线程安全的
线程的标识符推荐使用gettid系统调用,它的类型是pid_t,并且是唯一的
__thread是GCC内置的线程局部存储设施,效率高,但注意初始化只能使用编译器常量
每个文件描述符只由一个线程操作
RAII封装文件描述符
不要使用多线程+fork
不要使用多线程+signal


尚戈继
1 声望0 粉丝