Vés al contingut

Crida de mètodes asíncrons

De la Viquipèdia, l'enciclopèdia lliure

En la programació d'ordinadors multiprocés, la crida de mètodes asíncrons (amb acrònim anglès AMI), també coneguda com a invocació de mètodes asíncrons o el patró asíncron és un patró de disseny en què el lloc de crida no es bloqueja mentre s'espera que finalitzi el codi cridat. En lloc d'això, el fil de la crida es notifica quan arriba la resposta. Enquestar per obtenir una resposta és una opció no desitjada.[1]

L'AMI és un patró de disseny per a la invocació asíncrona de mètodes potencialment de llarga durada d'un objecte.[2] És equivalent al patró IOU ("Et dec") descrit el 1996 per Allan Vermeulen.[3][4]

En la majoria dels llenguatges de programació, un mètode anomenat s'executa de manera sincrònica, és a dir, en el fil d'execució des del qual s'invoca. Si el mètode triga molt de temps a completar-se, per exemple, perquè està carregant dades a Internet, el fil de trucada es bloqueja fins que s'hagi acabat el mètode. Quan això no es desitja, és possible iniciar un "fil de treball" i invocar el mètode des d'allà. A la majoria d'entorns de programació, això requereix moltes línies de codi, especialment si es té cura d'evitar la sobrecàrrega que es pot produir per la creació de molts fils. L'AMI soluciona aquest problema perquè augmenta un mètode d'objectes de llarga durada ("sincrònic") amb una variant "asíncrona" que retorna immediatament, juntament amb mètodes addicionals que faciliten rebre una notificació de finalització o esperar que es completi a un temps posterior.

Un ús comú de l'AMI és en el patró de disseny d'objectes actius. Les alternatives són la invocació de mètodes sincrònics i els objectes futurs.[5] Un exemple d'una aplicació que pot fer ús de l'AMI és un navegador web que necessita mostrar una pàgina web fins i tot abans que es carreguin totes les imatges.

Com que el mètode és un cas especial de procediment, la invocació de mètode asíncron és un cas especial de crida de procediment asíncron.

Referències

[modifica]
  1. BillWagner. «Calling Synchronous Methods Asynchronously» (en anglès). https://learn.microsoft.com.+[Consulta: 19 febrer 2023].
  2. «Asynchronous Method Invocation» (en anglès). Distributed Programming with Ice. ZeroC, Inc.. Arxivat de l'original el 5 January 2008. [Consulta: 22 novembre 2008].
  3. Vermeulen, Allan Dr. Dobb's Journal, 6-1996 [Consulta: 22 novembre 2008].
  4. Nash, Trey. «Threading in C#». A: Accelerated C# 2008 (en anglès). Apress, 2007. ISBN 978-1-59059-873-3. 
  5. Lavender, R. Greg; Douglas C. Schmidt Active Object An Object Behavioral Pattern for Concurrent Programming [Consulta: 22 novembre 2008].