首页 > ios > 同步与异步的区别

同步与异步的区别

  同步与异步在生活中随处可见。同步和异步是描述不同事件发生的依赖关系,同步是指这两个事件的发生有一定的时间顺序,异步是指这两个事件的发生是相互独立的。

同步执行模式:
  所谓同步执行模式,是指语句在同步执行模式下,将始终保持对程序流的控制,直至程序结束。如查询操作,客户机上的应用程序在向服务器发出查询操作的指令后,将一直等待服务器将查询结果返回客户机端,然后才继续进行下一步操作。
  众所周知,应用程序要从一个大表中删除所有的记录将是非常耗时的,如果应用程序采用的是单线程(thread)同步执行方式,某次删除工作很可能耽误其他重要工作的完成。如果应用程序等待的是远程任务,那么远程服务器失败或网络故障或一些无法预知的情况都可能使应用程序无限期地等下去,这是同步执行最大的缺陷。
  但是同步执行模式可以简化程序编制的复杂性。程序员可以不用过多地了解比较复杂的ODBC 2.0 API的使用,而只需使用ODBC的同步执行模式或使用数据控制项和数据库对象变量来编写应用程序,可以提高开发效率,但程序运行速度比不上异步执行模式的速度。

异步执行模式:
  所谓异步执行模式,是指语句在异步执行模式下,各语句执行结束的顺序与语句执行开始的顺序并不一定相同。例如查询操作,客户机上的应用程序在向服务器发出了查询操作的指令后,将立刻执行查询语句指令的下一条语句,而不需要等到服务器将查询结果返回客户机端。异步执行方式使应用程序能摆脱单个任务的牵制,提高了灵活性和应用程序的执行效率。但异步执行模式也存在一些问题,如它增加了编程的复杂性,特别是编写互用性(interoperable)要求较高 的程序。
  在负荷很重的客户/服务器系统中,适宜采用异步执行模式。在这种环境下,时间延迟频繁且漫长,相比之下异步执行的开销微不足道。但是,如果应用运行的环境比较复杂,则必须建 立一套完整的机制,周期性地检查函数执行的状态,以决定下一步执行方案。进行周期的检查可以有多种方法,如在应用中设置计时器并处理WM_TIMER信息等。
  虽然使用异步执行模式在编程序时十分复杂,但可以实现多任务并行执行,使执行的效率大大提高。
  选择并设置执行模式在应用程序开发中选择同步模式还是异步模式,是一个比较复杂的层次。当查询或对数据库的修改相对简单时,同步执行模式是一种很好的选择,它能够在几秒 或更少的时间内返回结果数据。另外,在应用程序获得结果集前不能继续执行时,根本不必要使用异步执行模式。在复杂查询情况下,特别是复杂的多行数据库的UPDATE或DELETE操作,可能需要很长的时间才能完成,需采用异步执行模式,让用户可以同时对程序的其他部分进行操作。
  对于一般程序员来说,如果他对同步执行模式与异步执行模式不了解,他往往会在对服务器发出一个操作语句(查询或读取一条记录等操作)后,立该引用服务器返回的执行结果,或者对该 结果进行下一步操作,这是很危险的。因为,在异步执行模式下,客户机上的后续语句是在该操作语句发出后接着执行的,但由于各种原因,服务器不一定能执行完该操作语句,并在后续语句执行前将结果返回客户机。因此,后续语句在引用前一操作语句的执行结果时,往往会因为该执行结果并不存在而引用了错误的值,造成系统错误或死锁,所以在实际应用中应根据具体情况慎重选择执行模式。

  1. 魅力卡公主 9月 28th, 2012 @ 12:26 | #1

    总得留点什么??想来想去,就留个脚印吧。。哈哈

  2. ABCD你是急 9月 29th, 2012 @ 09:58 | #2

    轻轻的我走了,
    正如我轻轻的来
    留下一串脚印,
    等你来回踩
    。。。

  3. Salihcan 11月 8th, 2012 @ 04:38 | #3

    Great insight. Reilveed I’m on the same side as you.

  4. Casquette Armani 11月 14th, 2012 @ 08:55 | #4

    Proper camaraderie foresees the requirements of a few other other than exclaim it is actually very.

  5. ugg boots sale 11月 20th, 2012 @ 20:06 | #5

    Assume‘testosterone experience so hard, the best quality information occur in case you the bare minimum demand them how to.

评论提交中, 请稍候...

留言


可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks