zoukankan      html  css  js  c++  java
  • (三)应该了解关于并发相关的概念

    3.并发相关的概念

    3.1同步和异步

           同步和异步通常用来形容一次方法调用。同步方法调用一开始,调用者必须等待被调用的方法结束后,调用者后面的代码才能执行。而异步调用,指的是,调用者不用管被调用方法是否完成,都会继续执行后面的代码,当被调用的方法完成后会通知调用者。比如,在超时购物,如果一件物品没了,你得等仓库人员跟你调货,直到仓库人员跟你把货物送过来,你才能继续去收银台付款,这就类似同步调用。而异步调用了,就像网购,你在网上付款下单后,什么事就不用管了,该干嘛就干嘛去了,当货物到达后你收到通知去取就好。

    3.2并发与并行

           并发和并行是十分容易混淆的概念.并发指的是多个任务交替进行,而并行则是指真正意义上的"同时进行".实际,如果系统内只有一个CPU,而使用多线程时,那么真实系统环境下不能并行,只能通过切换时间片的方式交替进行,而成为并发执行任务.真正的并行也只能出现在拥有多个CPU的系统中.

    3.3线程的定义和理解

          传统语言C++,Java等线程其实与操作系统线程是1:1的关系,每个线程都有自己的Stack,Java在64位系统默认Stack大小是1024KB,所以指望一个进程开启上万个线程是不现实的。但是实际上我们也不会这么干,因为起这么多线程并不能充分的利用CPU,大部分线程处于等待状态,CPU也没有这么核让线程使用。所以一般线程数目都是CPU的核数.

     3.4阻塞和非阻塞

        阻塞和非阻塞通常用来形容多线程间的相互影响,比如一个线程占有临界区资源,那么其他线程需要这个资源就必须进行等待该资源的释放,会导致等待的线程挂起,这种情况就是阻塞,而非阻塞就恰好相反,它强调没有一个线程可以阻塞其他线程,所有的线程都会尝试地往前运行.

    3.4临界区

         临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用.但是每个线程使用时,一旦临界区资源被一个线程占有,那么其他线程必须等待.

  • 相关阅读:
    [HEOI2016/TJOI2016]树
    luogu P4198 楼房重建
    [USACO11DEC]Umbrellas for Cows
    luogu P2700 逐个击破
    一、MegaCli命令介绍
    dmidecode -t1 | egrep "Manufacturer|Product Name"
    IPMITOOL常用操作指令V1.0
    CentOS 7上的性能监控工具
    Could not open device at /dev/ipmi0
    n95医用口罩(常见型号1860 或者9132)防水无呼吸阀
  • 原文地址:https://www.cnblogs.com/pingping-joe/p/9187400.html
Copyright © 2011-2022 走看看