POSIX-threads-programming-tutorials icon indicating copy to clipboard operation
POSIX-threads-programming-tutorials copied to clipboard

Summaries and notes on pthreads programming.

POSIX 多线程程序设计

本项目所有内容摘录自《POSIX多线程程序设计》与《Linux多线程服务端编程:使用muduoC++网络库》部分章节,简化了书中的内容,并提供了完整的源代码实现。

编译、运行

前提,你需要安装 CMake。所有章节源代码都放在 src 目录下,你可以直接编译后运行。

git clone https://github.com/Veinin/programming-with-POSIX-threads-tutorials.git
cd programming-with-POSIX-threads-tutorials
./build.sh

运行实例代码:

$ ./bin/barrier_main
00: (10)0000045001 0000045002 0000045003 0000045004 0000045005 0000045006
01: (11)0000055001 0000055002 0000055003 0000055004 0000055005 0000055006
02: (12)0000065001 0000065002 0000065003 0000065004 0000065005 0000065006
03: (13)0000075001 0000075002 0000075003 0000075004 0000075005 0000075006
04: (14)0000085001 0000085002 0000085003 0000085004 0000085005 0000085006

目录

  • 概述

    • 术语定义
    • 线程的好处
    • 线程的代价
    • 选择线程还是不用线程
    • POSIX 线程概念
    • 异步编程举例
  • 线程

    • 建立和使用线程
    • 线程生命周期
  • 同步

    • 不变量、临界区和谓词
    • 互斥量
    • 条件变量
  • 使用线程方式

    • 流水线
    • 工作组
    • 客户/服务器
  • 线程高级编程

    • 一次性初始化
    • 属性
    • 取消
    • 线程私有数据
    • 线程实时调度
  • POSIX 针对线程的调整

    • 多线程与fork
    • 多线程与exec
    • 多线程与signal
    • 多线程与stdio
    • 进程结束
    • 线程安全函数
  • 线程扩展

    • 栅栏(Barriers)
    • 读/写锁(Read-Write Lock)
    • 自旋锁(Spin Locks)
    • 信号量(Semaphore)
    • 工作队列
  • 线程同步精要

    • 线程同步四项原则
    • 互斥器
    • 条件变量
    • 不要使用读写锁和信号量