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

【多线程存在的问题】

作者: 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读取数据之前将“非法”数据打印出来。

相关文章

  • 多线程之GCD

    线程、多线程 多线程存在的问题 为什么使用多线程? GCD GCD 的 API 介绍Dispatch QueueD...

  • 【多线程存在的问题】

    一、回顾——cpu流水线 流水线三种冒险:结构冒险(同一个时刻都要用计算单元)数据冒险(数据依赖上一次的计算结果)...

  • Java一多线程

    目录: 一、进程与线程的概念 二、多线程的概念 三、多线程所存在的问题(线程安全问题、上下文切换) 四、多线程的三...

  • 节后面试必备:多线程和高并发介绍

    前言一、什么是多线程?1.多线程介绍 2.多线程实现原理? 3.白话文解释多线程 4.多线程存在的问题 二、什么是...

  • Java 基础 之 Synchronized 锁升级

    synchronize是平时用的比较多的多线程问题的解决方案,一般说存在多线程问题,加个锁,就用synchroni...

  • Java 基础 之 Synchronized 锁升级

    synchronize是平时用的比较多的多线程问题的解决方案,一般说存在多线程问题,加个锁,就用synchroni...

  • iOS 多线程技术有些啥,如何解决多线程带来的隐患

    有多线程就有因为多线程造成的数据安全问题(如何确保同一块共享内存在多线程下不发生数据错乱和数据安全问题) 线程同步...

  • 关于多线程的理解

    1.关于多线程存在的意义: 首先,既然有多线程,存在既有意义,那么为什么存在多线程呢,多线程的用处在何处呢我的理解...

  • Flutter -- 10.多线程

    Dart中的多线程 Dart中多线程不仅仅是多线程,更像一个进程。拥有独立的内存空间,不存在资源抢夺的问题,因此也...

  • 第一章 并发编程的挑战

    1.1上下文切换 多线程不一定就比单线程快,因为多线程存在上下文切换的问题、死锁的问题等问题, 测试循环累加和累减...

网友评论

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

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