同步在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复,否则他不往下执行(死心眼)。
异步在一定程度上可以看做是多线程的(废话,一个线程怎么叫异步),请求一个方法后,就不管了,继续执行其他的方法。
比如一个文章系统里面,文章内容通常是字数非常多的,如果数据量大,打开会非常的慢,这个时候可以采取两种方法:
1、死心眼:一直等待要显示的数据全部取出来
标题、作者、来源、创建时间、关键字、点击次数、文章正文
ok,全部取出
显示
碰上心急的用户,他会骂死你的。
2、异步:首先显示能够快速取出的部分:
标题、作者、来源、创建时间、关键字、点击数
显示
然后另外的一个线程等待取出文章的正文显示!
异步就是:做一件事情的同事,不影响做其他的事情。
-----------------------------------------
转帖一些文字:
所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。
异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。
并不是说谁好谁不好,只是同步的机制不适合在正式应用的项目当中(但自己测试还是可以的)
同步,就是实时处理,比如服务器一接收客户端请求,马上响应,这样客户端可以在最短的时间内得到结果,但是如果多个客户端,或者一个客户端发出的请求很频繁,服务器无法同步处理,就会造成涌塞。
异步,就是分时处理,服务器接收到客户端请求后并不是立即处理,而是等待服务器比较空闲的时候加以处理,可以避免涌塞。
同步和异步之分:
同步就是调用一个函数,直接函数执行完了才返回到调用函数
异步就是被调用函数初始化完后马上返回。
----------
同步就是(我死心眼)我等你(给我回答),异步就是(我很忙)我不等你(给我回答)
严格的说,异步还是有两种
一种是等,但是等的过程和同步不一样,等的时候可以做别的工作,但是程序的主线还是等待 WaitforSingleObject(hEvent,INFINTE,TRUE);
另外一种是CALLBACK方式,这种异步是完全不等待,程序主线发出请求之后就干别的事情去了,完全不理会请求执行的如何。
所有异步必然设计两个以上的线程(不然不存在异步的问题),第一种方式下,请求的后期工作是在发出请求的线程上执行,第二种方式下,后期工作可以在任何线程(通常是执行请求的线程上)完成。
分享到:
相关推荐
基于C#的TCP/IP同步以及异步通信实现方法,我已经把两种方法封装好了,直接调用就可以了,不仅可以实时获取连接的客户端,还可以实时刷新客户端连接,很好用的,如果有什么问题,欢迎联系我!
C#Udp同步和异步编程源代码,代码中有详细注释,在VS2010平台下正常运行,使用网络调试助手调试通过,注意根据自己的电脑修改IP地址
C# socket winform 同步和异步通信。 只供个人学习。 请不要发布到网上,纯手工制作。 同步:socket通信,客户端是WinCe项目,Windows上也可以运行,需要打开exe.不能在解决方案中调试。 异步:公共通信类 ...
Socket同步和异步通信,都是用C#语言编写,并且在同一个Winform项目文件下,同步和异步通信,都包含server和client。
同步和异步FIFO的硬件实现(verilog)和文档说明。。
Demo讲解了同步和异步的NSOperation的示例,更多的参见我的博客
C# socket同步和异步通信示例,vs2008 有同步的服务器和客户端 有一部的服务器和客户端
实现同步和异步下载网络图片,并显示在UIImageView中
同步和异步的套接字模块源码
串口编程让你了解什么是同步和异步吗?进来看看
JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息),支持多个抄送邮件发送。
JSBridge提供了Hybrid同步和异步调用。 实现WebView复用池,减少WebView初始化消耗的时间。 引入Context中间层,防止Activity内存泄漏。 集成腾讯x5内核,crash率低于0.06%,X5内核基于统一Blink内核,无缝隐藏系统...
java中的同步和异步的异同共4页.pdf.zip
同步和异步的区别.doc
代码解析React中setState同步和异步问题 React起源于Facebook的内部项目。React的出现是革命性的创新,React的是一个颠覆式的前端框架。在React官方这样介绍的它:一个声明式、高效、灵活的、创建用户界面的...
Python 携程_异步IO 04同步和异步的概念.mp4