多线程服务器编程[4]-C++多线程系统编程精要

2021年11月25日 阅读数:2
这篇文章主要向大家介绍多线程服务器编程[4]-C++多线程系统编程精要,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

线程原语的选用

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

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

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

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

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

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