zoukankan      html  css  js  c++  java
  • 从.net角度分析 异步和多线程

    • 线程 进程

    CPU目前都是多核心的,相当于一个大脑几块可以同时工作。

    超线程CPU是指在一块CPU中,用虚拟方法将一个物理核心模拟成多个核心(如:一个单物理核心,模拟成二个核心,即所谓的二线程。)只有当线程数比屋里核心数多才能叫超线程。如四核八线程才能叫超线程。

    可以肯定的是多核CPU比超线程更具有超高的运算能力。多核心的明显缺点是:使用率要比超线程CPU低。因为,多核心在处理数据时,它们相互“合作”的并不是很完美,常常某个核心需要等待其他核心的计算数据,从而耽误时间,被迫怠工。另外,由于目前多核心都是采用共享三级缓存,这更使多核心的CPU运算速度减慢不少。超线程是用虚拟的方法将一个物理核心虚拟成多个核心,它能够最大限度地利用现有的核心资源,具有较高性价比。

    操作系统对多核处理器的优化。

    进程 是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其他各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。

    线程 是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程。主执行线程终止了,进程也就随之终止。

    线程是CPU的调度单元,是进程中的执行单位,一个进程中可以有多个线程同时执行代码。

    异步编程提高了CPU的使用率。

    • 阻塞线程

    C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程。

    被async关键字标识的方法不会影响方法是同步还是异步运行并完成,而是,它使方法可被分割成多个片段,其中一些片段可能异步运行,这样这个方法可能异步完成。这些片段界限就出现在方法内部显示使用”await”关键字的位置处。所以,如果在标记了”async”的方法中没有显示使用”await”,那么该方法只有一个片段,并且将以同步方式运行并完成。在await关键字出现的前面部分代码和后面部分代码都是同步执行的(即在调用线程上执行的,也就是GUI线程,所以不存在跨线程访问控件的问题),await关键处的代码片段是在线程池线程上执行。总结为——使用async和await关键字实现的异步方法,此时的异步方法被分成了多个代码片段去执行的,而不是像之前的异步编程模型(APM)和EAP那样,使用线程池线程去执行一整个方法。

  • 相关阅读:
    网页打开本地exe程序
    【JS】最简单的域名防红方法,QQ/微信打开网站提示浏览器打开
    【HTML】建站成功默认页面
    python中日志器的使用
    python中连接mysql
    python中处理配置文件
    接口实战项目总结上
    布隆过滤器和LRU Cache
    Python版常见的排序算法
    LeetCode 27. 移除元素
  • 原文地址:https://www.cnblogs.com/sunShineJing/p/6485448.html
Copyright © 2011-2022 走看看