线程原语的选用
不间接应用 Pthreads,而是应用更为易用的 wrapper,封装上面的调用
- 线程的创立和期待完结
- mutex 的创立、销毁、加锁、解锁
- 条件变量的创立、销毁、期待、告诉、播送
在这些 wrapper 之上进一步构建线程同步组件
- ThreadPool
- CountDownLatch
- BlockingQueue (有界 / 无界)
- …
多线程编程须要留神的中央
C++ 规范库容器和 std::string 都不是线程平安的
iostream 不是线程平安的
线程的标识符举荐应用 gettid 零碎调用,它的类型是 pid_t,并且是惟一的
__thread 是 GCC 内置的线程部分存储设施,效率高,但留神初始化只能应用编译器常量
每个文件描述符只由一个线程操作
RAII 封装文件描述符
不要应用多线程 +fork
不要应用多线程 +signal