线程原语的选用

不间接应用Pthreads,而是应用更为易用的wrapper,封装上面的调用

  • 线程的创立和期待完结
  • mutex的创立、销毁、加锁、解锁
  • 条件变量的创立、销毁、期待、告诉、播送

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

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

多线程编程须要留神的中央

C++规范库容器和std::string都不是线程平安的
iostream不是线程平安的
线程的标识符举荐应用gettid零碎调用,它的类型是pid_t,并且是惟一的
__thread是GCC内置的线程部分存储设施,效率高,但留神初始化只能应用编译器常量
每个文件描述符只由一个线程操作
RAII封装文件描述符
不要应用多线程+fork
不要应用多线程+signal