22问答网
所有问题
c#异步和多线程有什么区别和联系
如题所述
举报该问题
推荐答案 2020-02-23
异步和多线程可以说没有必然的联系,只能说异步可以通过多线程实现而已
要理解这些东西,你得具备很多相关的知识,操作系统原理,编译原理等
简单地来说,计算机或者说CPU执行你的代码都是顺序执行的,当前的语句没有执行完,不会执行后面的语句的,这是永远不变的规则!
但是这样的机制会使整个执行效率很低,因为CPU总是要等待当前的语句执行完毕了才会执行后面的代码,而计算机在绝多数的时候都是处于等待用户的输入,等待磁盘文件的读取完成,等待网络数据的传输完成中,所以为了提高整个系统的运行效率,提高CPU的执行效率,计算机系统引入了异步的机制。
异步机制,简单地说就是CPU不会傻傻地处于等待状态,它会先干别的事情,当它需要的东西已经准备完毕后(大多数的情况都是等待外部的输入数据准备完毕,也有些是复杂的计算完毕),硬件系统给CPU一个中断,告诉有了新的数据了,你现在可以去处理了。
这就是最基本的异步原理,而现代操作操作系统对硬件系统做了良好的封装,把很多底层机制屏蔽了,为程序的开发者提供了事件和多线程的概念,让程序的开发者可以更好地利用异步机制。
再说说多线程吧。多线程是计算机引入了操作系统之后才有的概念,至于为什么计算机要引入操作系统,在此就不叙述了,自行了解。多线程的实现有两个方法,一个就是增加CPU的核数和个数,这是最直接的方法,还有一种是采用CPU轮询的方式,每个进程都执行一段时间,又去执行另一个进程的指令,由于切换的速度非常的快,给人的感觉就是同时执行的。
说了这么多,你可能很失望,因为没有代码,没有举例。但我想说的是,用代码无法说明这个问题,不同的操作系统,不同的编程语言,不同的编程框架,对异步和多线程的定义和处理是不一样的,但原理就是这样的。
我们写代码无非就是写一堆的指令去要求CPU执行,同步的方式就是这样的:
我:hi,CPU,我要你做一件事情,而且必须立刻马上就做,因为我正在等着你。
CPU:那你就等着吧,我现在去做。
异步的方式是这样的:
我:hi,CPU,我要你做一件事情,但是不是立刻就做,你可以交给下面的人去做,或者找一个帮手来,我们继续做后面的事情.
CPU:好的,我现在通知硬件去做,等有结果了我通过事件告诉你
或者
CPU:好的,我让另一个核心来做这件事情,我们继续(其实多线程是操作系统实现的,我只是这么举个例子而已)
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://22.wendadaohang.com/zd/2f06CSIIfTS6h22Ih2.html
其他回答
第1个回答 2017-01-23
多线程是实现异步操作的其中一种方式,处理繁杂耗时的任务的同时又不挂起UI。
异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理。
本回答被网友采纳
相似回答
浅析
C#
中
异步和多线程的区别
答:
浅析C#中异步和多线程的区别
异步和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性
。异步操作无须额外的线程负担,并且使用回调的方式进行处理,在设计良好的情况下,处理函数可以不必使用共享变量(即使无法完全不用,最起码可以减少 共享变量的数量),减少了死锁的可能。当然异步操作...
C#
中
异步和多线程的区别
答:
异步和多线程的区别之线程的本质 线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能
,线程本质上是进程中一段并发运行的代码,所以线程需要操作系统投入CPU资源来运行和调度。异步和多线程的区别之异步操作的优缺点 因为异步操作无须额外的线程负担,并且使用回调的方式进行处理,在设计良好的情...
大家正在搜
多线程和异步的关系和区别
多线程同步和异步的区别
异步编程和多线程的区别
异步多线程与同步多线程
异步和多线程哪个效率更高
并发和多线程的区别
多线程并发和并行的区别
异步一定是多线程
多线程与异步
相关问题
c#异步和多线程有什么区别和联系?
求教C# 多线程、异步、同步之间的联系与区别
异步的C#异步与多线程的异同点
C#多线程同步和异步共同使用Demo
C#开发中什么时候用异步,什么时候用多线程?具体说明一下,谢...
c#的async到不是不是异步,它和多线程是什么
c# AsyncCallback 是多线程吗 委托与Thre...
C#多线程有什么作用