美文网首页
【多线程存在的问题】

【多线程存在的问题】

作者: hello高world | 来源:发表于2017-01-21 14:48 被阅读0次

    一、回顾——cpu流水线

    CPU指令流水线 阻塞一个时钟周期
    • 流水线三种冒险:
      1. 结构冒险(同一个时刻都要用计算单元)
      2. 数据冒险(数据依赖上一次的计算结果)
      3. 分支冒险(取指令需要依赖if判断结果)

    二、多线程的问题

    • 是否存在结构冒险?

      火车订票系统,只有最后一张票,但有2个客户试图争夺这张火车票。

    • 是否存在数据冒险?

      线程A读取mysql数据,线程B打印数据,他需要等待A的完成。

    • 是否存在分支冒险?

      还未想到:(

    三、归纳

    • 结构冒险特点:

    1、独占有限资源
    2、同时处理

    • 数据冒险特点:

    1、协作关系

    四、推广

    • 结构冒险——活跃性问题

    同一张火车票被A占有了,B处于等待。如果A不退票,B就一直等待下去。

    • 数据冒险——安全问题

    多线程如果没有使用良好的协作机制,执行顺序不可预见,容易导致结果不是我们想要的。
    线程A读取mysql数据,线程B打印数据,他需要等待A的完成。如果没有人控制让B等待A的结果,可能B会在A读取数据之前将“非法”数据打印出来。

    相关文章

      网友评论

          本文标题:【多线程存在的问题】

          本文链接:https://www.haomeiwen.com/subject/itggbttx.html