POSIX多线程程序设计(一)

几个重要概念

  • ​异步(asynchronous)​​:任何两个彼此独立运行的操作是异步的.异步表明事情相互独立地发生,除非有强加的依赖性.
  • ​并发(concurrency)​​:指事情同时发生.
  • ​单处理器(uniprocessor)​​:指一台计算机只有一个编程人员可见的执行单元(处理器)
  • ​多处理器(multiprocessor)​​:一台计算机拥有多个处理器,它们共享同一个指令集和相同的物理内存。
  • ​并行(parallelism)​​:指并发序列同时自执行
  • ​线程安全​​:指代码能够被多个线程调用而不会产生灾难性结果(保护手段:临界区、互斥量、条件变量和线程私有数据等)
  • ​执行环境​​:指并发实体的状态
  • ​调度​​:决定在某个给定时刻该执行哪个环境(或环境组),并在不同的环境中切换
  • ​同步​​:为并发执行的环境提供了协调访问共享资源的一种机制。同步本指“同时发生”,这里指“阻止同时发生”,同步的同义词:协调–同步就是让线程协调地完成工作的机制。
  • ​线程​​:计算机中的可执行单元
  • ​互斥量​​:阻止线程间发生不可预期的冲突。
  • ​条件变量​​​:线程间发生冲突,条件变量让线程等待直到可以安全地执行。
    互斥量和条件变量都是用来同步线程间操作的。
线程是进程里足以执行代码的部分。在大多数系统中,线程包括:当前指令位置指针(通常称为计数器或PC)、栈顶指针(SP)、通用寄存器、浮点或地址寄存器。线程还可能包括像处理器状态和协处理器寄存器等数据。线程不包括进程中的其它数据,如地址空间和文件描述符。一个进程的所有线程共享文件和内存空间,包括程序文件段和数据段。

​线程比进程简单​

可以将线程理解为一种减负的进程。系统在线程间切换比在进程间切换要快得多,这很大程度上得益于线程间共享地址人空间(包括代码段、数据段和堆栈)。