`
041621219
  • 浏览: 17908 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

同步和异步 理解

阅读更多
同步在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复,否则他不往下执行(死心眼)。

异步在一定程度上可以看做是多线程的(废话,一个线程怎么叫异步),请求一个方法后,就不管了,继续执行其他的方法。

比如一个文章系统里面,文章内容通常是字数非常多的,如果数据量大,打开会非常的慢,这个时候可以采取两种方法:

1、死心眼:一直等待要显示的数据全部取出来

标题、作者、来源、创建时间、关键字、点击次数、文章正文 

ok,全部取出

显示

碰上心急的用户,他会骂死你的。

2、异步:首先显示能够快速取出的部分:

标题、作者、来源、创建时间、关键字、点击数

显示

然后另外的一个线程等待取出文章的正文显示!

异步就是:做一件事情的同事,不影响做其他的事情。

-----------------------------------------
转帖一些文字:

所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。 
  
异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。 
  
并不是说谁好谁不好,只是同步的机制不适合在正式应用的项目当中(但自己测试还是可以的)

同步,就是实时处理,比如服务器一接收客户端请求,马上响应,这样客户端可以在最短的时间内得到结果,但是如果多个客户端,或者一个客户端发出的请求很频繁,服务器无法同步处理,就会造成涌塞。 

异步,就是分时处理,服务器接收到客户端请求后并不是立即处理,而是等待服务器比较空闲的时候加以处理,可以避免涌塞。 

同步和异步之分:
同步就是调用一个函数,直接函数执行完了才返回到调用函数
异步就是被调用函数初始化完后马上返回。

----------
同步就是(我死心眼)我等你(给我回答),异步就是(我很忙)我不等你(给我回答)

严格的说,异步还是有两种
一种是等,但是等的过程和同步不一样,等的时候可以做别的工作,但是程序的主线还是等待  WaitforSingleObject(hEvent,INFINTE,TRUE); 

另外一种是CALLBACK方式,这种异步是完全不等待,程序主线发出请求之后就干别的事情去了,完全不理会请求执行的如何。 

所有异步必然设计两个以上的线程(不然不存在异步的问题),第一种方式下,请求的后期工作是在发出请求的线程上执行,第二种方式下,后期工作可以在任何线程(通常是执行请求的线程上)完成。
分享到:
评论

相关推荐

    C# 同步与异步读写

    在编程领域,尤其是在高性能和高并发的场景下,理解和掌握同步与异步读写是非常关键的。C#作为微软开发的面向对象的编程语言,提供了丰富的API和特性来支持这两种操作模式。本篇文章将深入探讨C#中的同步与异步读写...

    unix实验二 同步与异步write的效率比较

    该实验旨在比较Unix系统中同步与异步`write`系统调用的效率差异。实验主要分为以下几个部分: 1. **实验目的**: ...这对于理解和优化文件I/O性能至关重要,尤其是在处理大量数据或高并发I/O操作的系统中。

    异步清零和同步清零置数区别

    通过74LS161功能表的阅读和理解,以及反馈清零法和反馈置数法的应用,我们可以更深入地掌握异步清零和同步清零置数的区别及其应用。 总结来说,异步清零与同步清零的区别在于是否依赖于时钟信号的上升沿或下降沿来...

    同步和异步FIFO.zip

    总的来说,理解和掌握同步与异步FIFO的概念对于硬件设计师来说至关重要,因为它们在高速数据传输、通信接口和跨时钟域的数据处理等方面都有广泛的应用。通过深入学习相关文档和实例代码,我们可以更好地掌握这些技术...

    C# Socket 同步和异步通信

    本篇将详细探讨C#中的Socket同步和异步通信,以及如何在Winform环境下实现这些功能。 首先,我们要理解什么是Socket。Socket,也称为套接字,是操作系统提供的网络编程接口,用于建立和维护网络连接,进行数据交换...

    同步和异步的NSOperation的Demo

    在本Demo中,我们将深入探讨同步和异步操作的区别以及如何在实践中运用NSOperation。 首先,NSOperation是一个抽象基类,它代表一个可执行的任务或者操作。你可以通过继承NSOperation来创建自定义的操作类,或者...

    C#Udp同步和异步编程源代码

    C#作为.NET框架的主要编程语言,提供了丰富的API来处理网络通信,其中包括UDP(User Datagram Protocol)协议的同步和异步编程。本文将深入探讨C#中如何实现UDP同步和异步编程,并提供相关知识点。 首先,UDP是一种...

    C# socket同步和异步通信示例

    在C#编程中,Socket是网络通信...通过理解和实践这些C# Socket同步和异步通信示例,开发者可以更好地掌握网络编程技术,为构建高效稳定的网络应用打下坚实基础。在实际开发中,应根据项目需求灵活选择合适的通信方式。

    同步和异步的套接字模块源码

    总的来说,理解和掌握同步和异步套接字的概念及其实现方式对于任何从事网络编程的开发者来说都至关重要。同步套接字简单易用,适合对响应时间要求不高的场景;而异步套接字复杂但高效,适用于需要处理大量并发连接的...

    c#线程同步与异步编程

    本教程将深入探讨这两个概念,以帮助初学者更好地理解和应用。 同步编程是程序执行的一种方式,其中代码按照自上而下的顺序依次执行。在一个线程中,如果一个任务正在执行,其他任务必须等待该任务完成才能继续。在...

    同步复位和异步复位比较

    综上所述,理解同步复位与异步复位的区别及其应用场景,对于数字电路设计者而言至关重要。通过灵活运用“异步复位,同步释放”策略,以及针对多时钟系统的精细化管理,可以显著提升电路的稳定性和效率。

    同步方法和异步方法比较

    1. **复杂性增加**:异步编程模型(如回调、事件驱动、Promise或async/await)往往比同步模型更复杂,更难理解和调试。 2. **错误处理**:异步错误处理可能更加棘手,需要特别注意错误传播和捕获。 3. **回调地狱**...

    完整版本网络编程 TCP Socket 同步、异步

    在深入学习这部分内容时,你需要理解TCP连接的生命周期、Socket API的使用、多线程或多进程模型在同步和异步编程中的应用,以及如何设计和实现高效的并发处理策略。同时,了解网络编程中的错误处理、异常处理和性能...

    QT C++ http get、post 同步异步请求

    `netserver.cpp`包含了类的方法实现,可能包括了get和post的同步异步请求。`netserver.h`则是类的声明,定义了类的接口,包括公共方法、属性等。 为了更好地理解这个项目,你需要查看这两个文件的具体代码,了解...

    tcp与udp同步、异步通信

    学习这个程序集,不仅可以了解TCP和UDP的基础知识,还能深入理解MFC在网络编程中的应用,掌握同步与异步通信的区别和实现方式。这对于提升网络编程技能,尤其是开发涉及网络通信的应用程序,是非常有价值的。

    串口编程让你了解什么是同步和异步吗?进来看看

    串口编程让你了解什么是同步和异步吗?进来看看

    android 简单同步与异步

    在Android开发中,同步与异步操作是两个关键的...总之,理解和掌握Android中的同步与异步处理是每个Android开发者必备的技能。通过合理运用各种异步机制,可以确保应用程序既高效又响应迅速,为用户提供优秀的体验。

    同步执行和异步执行学习Demo

    在编程领域,同步执行与异步...通过实践和学习Demo,可以更好地理解和运用这些原理,提升编程技能。在"学习demo"这个压缩包中,可能包含了相关的代码示例和练习,可以帮助你深入理解这两种执行方式的差异和应用场景。

    android http同步与异步通讯包

    在Android应用开发中,网络通信是必不可少的一部分,用于获取服务器数据或者发送用户操作到服务器。本资源提供的"android ...通过研究和使用这些源码,你可以更好地理解和掌握Android中同步与异步网络请求的实现原理。

    文件同步与异步读写

    首先,让我们理解同步和异步读写的基本原理。同步读写是指在执行I/O操作(如读取或写入文件)时,程序会暂停当前的执行流程,等待I/O操作完成后再继续。这种方式保证了数据的准确性和顺序性,但可能会造成阻塞,即...

Global site tag (gtag.js) - Google Analytics