同步和异步的执行概念和区别

转载:iteye.com/blog/avaj-151724

所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。 
 
异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。 

并不是说谁好谁不好,只是同步的机制不适合在正式应用的项目当中(但自己测试还是可以的)

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

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

同步和异步之分:

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

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

严格的说,异步还是有两种:

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

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

所有异步必然设计两个以上的线程(不然不存在异步的问题)

  • 第一种方式下,请求的后期工作是在发出请求的线程上执行
  • 第二种方式下,后期工作可以在任何线程(通常是执行请求的线程上)完成

猜你喜欢

转载自www.cnblogs.com/raysuner/p/12326533.html