第十二章《并发编程》

基于进程的并发编程

构建并发程序最简单的方法就是用进程

进程有独立的地址空间既是优点也是缺点:

优点:

  • 一个进程不可能会覆盖掉另一个进程的虚拟内存

缺点:

  • 独立的地址空间使得共享状态变得困难

基于I/O多路复用的并发编程

优点:

  • 比基于进程的设计给了开发者更多对程序行为的控制
  • 运行在单一的进程上下文中,使得共享数据变得简单

缺点:

  • 编码复杂
  • 不能充分利用多核处理器

基于线程的并发模型

属于上述两种方式的混合

并发问题

包括:

  • 线程安全:需要注意4类线程不安全函数:

    1. 不保护共享变量的函数
    2. 保持跨越多个调用状态的函数
    3. 返回指向静态变量的指针的函数
    4. 调用线程不安全函数的函数
  • 可重入性:指函数被多个线程调用时,不会引用任何共享变量

  • 使用已存在的库函数:标准C库中的函数大部分是线程安全的,有一小部分例外,需要注意

  • 竞争:需要注意多线程的程序必须对任何可行的轨迹线都正确工作,而不只是开发者预想的某种特殊轨迹线

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容