zoukankan      html  css  js  c++  java
  • 异步编程async/await

    什么是异步?

    在异步程序中,程序代码不需要按照编写时的顺序严格执行,有时需要一在一个新的线程中运行一部分代码,有时无需创建新的 线程,但是为了更好的利用单个线程的能力,需要改变代码的执行顺序。

    进程

    启动程序时,系统会在内存中创建一个新的进程。进程是构成运行程序的资源的集合,这些资源包括虚地址空间、文件句柄和许多其他程序运行所需的东西。

    线程

    在进程内部,系统创建一个称为线程的内核对象,它代表了真正执行的程序。线程是执行线程的简称。一旦线程建立,系统会在Main方法的第一句开始线程的执行。

    线程知识点:

    1、默认情况下,一个进程只包含一个线程,从程序的开始一直执行到结束。

    2、线程可以派生其他线程,因此在任何时刻,一个进程都可能包含不同状态的多个线程,来执行程序的不同部分。

    3、如果一个进程拥有多个线程,它们将共享进程的资源。

    4、系统为处理器执行所规划的单元是线程,不是进程。

    为什么需要异步编程?

    一个服务器程序可能会持续不断在发起到其他服务器的连接,并向他们请求数据,同时处理来自多个客户端程序的请求,这种通信任务往往耗费大量时间,在此期间程序只能等待网络或者互联网上其他计算机的响应,这严重削弱了性能。程序不应该浪费等待响应的时间,而应该更加高效,在等待的同时执行其他任务,回复到达后再继续执行第一个任务。

    实例:

    call1和call2占用了大部分时间,不管哪次调用,绝大部分时间都浪费在等待网站的响应上。

    如果我们能初始化两个CountCharater调用,无需等待结果,而是直接执行4个CountToAlageNumber调用,然后在两个CountCharacter方法调用结束时在获取结果,就可以明显的提升性能。

     结果如下:

    async/await版本的程序的时间轴

  • 相关阅读:
    安卓组件service
    安卓组件-BroadcastReceiver
    【bug】java.lang.NoSuchMethodError: android.widget.TextView.setBackground
    【转】安卓毛玻璃效果
    INSTALL_FAILED_UPDATE_INCOMPATIBLE
    安卓 异步线程更新Ui
    OC语言-03-OC语言-三大特性
    OC语言-02-OC语言-基础知识
    OC语言-01-面向过程与面向对象思想
    C语言-07-预处理、typedef、static和extern
  • 原文地址:https://www.cnblogs.com/MirZhai/p/7600294.html
Copyright © 2011-2022 走看看