Uninote
Uninote

并发概述

  • 并发
同一时间,多个进程,一个CPU执行。
  • 并行
同一时间,多个进程,多个CPU执行。
  • 竞争条件
//起因: 按顺序执行的代码未按顺序执行。
//解决并发问题错误方向:延时。
//正确方向:正确逻辑。
  • 原子性
    • 含义:在某一运行环境中不可分割或不可中断。
    • 含义(放上下文里理解):在某个上下文不可分割或不可中断,就是原子性的操作。
  • 内存访问同步
    • 某一内存资源被多个g引用,引发不确定性。(注:g是grouting的简写,可以理解为一个进程。实际是一个轻量级的线程。)
    • 引发新概念:临界区:被多个g引用的资源和锁:对临界区加锁限制进入临界区资源的操作者数量。
    • 锁可以缩小临界区的不确定性(不知道多个g谁会抢占临界区资源),但影响并发性能。
  • 死锁、活锁、饥饿
    • 死锁
    //死锁含义:所有g互相等待或阻塞。
    //触发死锁因素(Coffman):
    //	1.相互排斥:多g同时独占一个资源。
    //	2.等待条件:多个g同时拥有一个资源,等待额外的资源。
    //	3.没有抢占:资源只能被单个g释放。
    //	4.循环等待:g1等多个g,多个g等g1。
    
    • 活锁
    // 相向而行的行人互相向各自向反方向让行。多g无法推进程序状态。
    

go并发(极客课堂)

基础

点赞(0) 阅读(192) 举报
目录
标题