异步方法调用
异步方法调用或异步方法模式是(多线程)面向对象程序设计中用于异步调用对象的潜在的长期运行方法的一种设计模式[1]。它等价于提出的模式[2][3]。
基于事件的异步模式是异步方法调用的一个变种,开销更大但能更好的表现软件组件对象。.NET框架和中的java.util.concurrent.FutureTask
类中使用的基于事件的异步模式使用事件来解决同样的问题。
大部分编程语言中对方法的调用是同步执行的。例如在线程执行体内,即线程的调用函数中,方法的调用就是同步执行的。如果方法需要很长的时间来完成,比方说从加载数据的方法,调用者线程将被阻塞直到方法调用完成。如果不希望调用被阻塞,则可以通过创建新的线程并在线程中调用方法,在大多数编程环中上这样做可能需要很长的一段代码,尤其是需要小心处理线程过多的额外开销。异步方法调用它通过使用一种立即返回的异步的变体并提供额外的方法来支持接受完成通知以及完成等待改进长期运行的(同步)方法。
活动对象()设计模式通常使用异步方法调用。异步方法调用的一个替代方案是同步的方法调用和未来对象()模式。[4] 在浏览器的实现上可以采用异步方法调用,例如浏览器需要在页面中的图像加载完成之前将页面显示出来。
参考来源
- . Distributed Programming with Ice. ZeroC, Inc. [22 November 2008]. (原始内容存档于2008年1月5日).
- Vermeulen, Allan. . Dr. Dobb's Journal. June 1996 [22 November 2008]. (原始内容存档于2009-08-08).
- Nash, Trey. . . Apress. 2007. ISBN 9781590598733.
- Lavender, R. Greg; Douglas C. Schmidt. (PDF). [22 November 2008]. (原始内容 (PDF)存档于2012-09-24).
参考文献
- Chris Sells and Ian Griffiths. . 2nd. O'Reilly. 2007: 747–749. ISBN 9780596510374.
- Using asynchronous method calls in C#
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.