同步就是一根筋,一件事从头到尾,干每件事情都得有确定的返回值,只有返回以后才执行下一步,有点一条道步步稳打走到黑的感觉
异步就是笑面虎,他可以依次的做很多事情,具体每件事情,他不需要等完成后的返回值直接做下一步,有所有事情中同时处理游刃有余的感觉
*******************************************************************************
1、换个角度
同步就相当于你请办公室人吃饭,你通知A去吃饭,A只要不表态的话,你就一直等下去,直到A说去你就将他带到饭店然后再用同样的方法去通知B,直到b亲自口头说不去,你才会用同样的方法去通知C,直到将办公室的人全部通知完为止
异步对于同样一件请客吃饭的事情,你的处理方式就不一样,你会跑到A跟前说a我请你吃饭,可能a正在忙,但是你也很忙,你还有很多人要通知,或者给a留个字条请他吃饭,然后就去找B,具体a去不去你也不清楚,然后你会将所有的人通知一遍,最后你直接去饭店定桌,等着他们的回信,可能有人给你打电话反馈等等
一句话:同步就是我通知你,你必须给我反馈,异步就是我忙着呢,通知到了,不等你了
*******************************************************************************
2、同步异步的处理过程
同步就是一直等,等到你讲我提出的给个回复为止
异步就是先将所有声明的事情干到底,然后等回复,但是回复的方法分为两种:
***************(摘抄)
一种是等,但是等的过程和同步不一样,等的时候可以做别的工作,但是程序的主线还是等待
WaitforSingleObject(hEvent,INFINTE,TRUE);
另外一种是CALLBACK方式,这种异步是完全不等待,程序主线发出请求之后就干别的事情去了,完全不理会请求执行的如何。
所有异步必然设计两个以上的线程(不然不存在异步的问题),第一种方式下,请求的后期工作是在发出请求的线程上执行,第二种方式下,后期工作可以在任何线程(通常是执行请求的线程上)完成。