种豆资源网

当前位置:首页 > 百科 > 百科综合 / 正文

异步编程

(2019-07-15 08:02:55) 百科综合
异步编程

异步编程

.NET 与C# 的每个版本发布都是有一个“主题”。即:C#1.0託管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程。

执行绪概述

从此图中我们会发现 .NET 与C# 的每个版本发布都是有一个“主题”。即:C#1.0託管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程。

多核心CPU超执行绪CPU

1. 多核心处理器(CPU)指在一块处理器(CPU)中含有多个处理单元,每一个处理单元它就相当于一个单核处理器(CPU)。因此,多核处理器的功能就相当于多台单核处理器电脑在线上作战。
2.超执行绪处理器(CPU)指在一块CPU中,用虚拟的方法将一个物理核心模拟成多个核心(一般情况是一个单物理核心,模拟成二个核心,也即所谓的二执行绪。只有当执行绪数比物理核心数多才能叫超执行绪。如四核四执行绪并不是超执行绪,而四核八执行绪才能叫超执行绪)。
3.优缺点:
1)多核心是真正的物理核心,一块多核心的处理器(CPU),就相当于多块单核心的处理器(CPU)相互协作。因此,从理论上说,多核心比超执行绪具有更高运算能力。虽然多核心比超执行绪的运算速度快很多,但多核心也有一个明显的缺点,那就是多核心的使用效率比超执行绪处理器(CPU)低。因为,多核心在处理数据时,它们相互“合作”的并不是很完美,常常某个核心需要等待其他核心的计算数据,从而耽误时间,被迫怠工。另外,由于目前多核心都是採用共享三级快取,这更使多核心的CPU运算速度减慢不少。
2)超执行绪是用虚拟的方法将一个物理核心虚拟成多个核心,它能够最大限度地利用现有的核心资源,具有较高性价比。

作业系统对多核处理器的最佳化

主要体现在调度和中断上:
1.对任务的分配进行最佳化。使同一应用程式的任务儘量在同一个核上执行。
2.对任务的共享数据最佳化。由于多核处理器(Chip Multi-Processor,CMP)体系结构共享二级快取(目前),可以考虑改变任务在记忆体中的数据分布,使任务在执行时儘量增加二级快取的命中率。
3.对任务的负载均衡最佳化。当任务在调度时,出现了负载不均衡,考虑将较忙处理器中与其他任务最不相关的任务迁移,以达到数据的冲突最小。

进程和执行绪

1. 进程 进程是应用程式的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。
2. 执行绪 执行绪是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行执行绪。主执行执行绪终止了,进程也就随之终止。
每个执行绪都维护异常处理程式、调度优先权和执行绪上下文。(执行绪上下文,当前执行的执行绪在其时间片结束时被挂起,而另一个执行绪继续运行。当系统从一个执行绪切换到另一个执行绪时,它将保存被抢先的执行绪的执行绪上下文,并重新载入执行绪伫列中下一个执行绪的已保存执行绪上下文)
3. 关係 作业系统使用进程将它们正在执行的不同应用程式分开,.NET Framework 将作业系统进程进一步细分为System.AppDomain (应用程式域)的轻量託管子进程。
执行绪是CPU的调度单元,是进程中的执行单位,一个进程中可以有多个执行绪同时执行代码。

使用

当一个异步过程调用发出后,调用者不能立刻得到结果。基于事件机制,实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。比如,你现在要有一批数据要大数据要入库,你又不想一边入库一边等待返回结果,你可以用异步,将大数据推入一个伫列,然后另外一个执行绪来操作这个伫列里面的数据入库,入完了,就通知一下主执行绪。这段时间你的主执行绪可以做任何事。

标 签

搜索
随机推荐

Powered By 种豆资源网||