stringtranslate.com

Uniones (biblioteca de concurrencia)

Joins es una API de computación concurrente asíncrona ( Join-pattern ) de Microsoft Research para .NET Framework . Se basa en el cálculo de unión y hace que las construcciones de concurrencia del lenguaje Cω estén disponibles como un ensamblaje CLI que cualquier lenguaje compatible con CLI puede usar.

Descripción general

Las uniones se pueden utilizar para expresar la concurrencia en una aplicación utilizando el patrón de uniones, que se puede utilizar tanto para aplicaciones multiproceso como para aplicaciones distribuidas basadas en eventos. La API Joins emula expresiones declarativas con seguridad de tipos de patrones de sincronización.

La biblioteca Joins emula métodos asíncronos y sincrónicos. Un método asincrónico, en lenguaje Cω y Joins, es aquel que no bloquea el método de la persona que llama, ni devuelve ningún resultado, mientras que un método sincrónico bloquea el método de la persona que llama. En la API Joins, los métodos sincrónicos y asincrónicos se implementan como delegados genéricos . El uso de genéricos proporciona seguridad de tipos. Por ejemplo, se puede crear un conjunto de métodos sincrónicos y asincrónicos y usarlos para crear un objeto que implemente el patrón, como:

clase pública JoinDemo { solo lectura pública asincrónica . Canal <int> Cola ;público de solo lectura Asíncrono . Canal <cadena> Enviar ;público sólo lectura Síncrono < int > . Recuperar Canal ; Unión privada joinPattern = Unirse . Crear (); public JoinDemo () { joinPattern . Inicializar ( cola de salida ); unirsePatrón . Inicializar ( enviar fuera ); unirsePatrón . Inicializar ( fuera Recuperar ); } }                               

Cuando se llaman métodos asincrónicos, los parámetros se colocan en un canal, que es una cola administrada por el tiempo de ejecución de Joins. Opcionalmente, el método puede iniciar un nuevo hilo para procesar los parámetros en segundo plano y devolver los resultados. Cuando se llama al método síncrono correspondiente, el parámetro se devuelve para su posterior procesamiento. Si no hay ningún parámetro presente en la cola cuando se llama al método sincrónico, la persona que llama se detiene. El tiempo de ejecución de Joins programa qué parámetro se devuelve en función de si está listo.

El patrón de sincronización de los métodos se define mediante patrones de unión , que describen lo que sucede cuando se invoca un conjunto de canales. Por ejemplo, lo que sucede cuando se llaman conjuntamente Enviar y Recuperar puede ser diferente a Enviar y Cola .

public void SetPatterns () { unirse . Cuándo ( Enviar ). Y ( Recuperar ). Hacer ( s => s ); unirse . Cuándo ( Cola ). Y ( Recuperar ). Hacer ( n => n . ToString ()); unirse . Cuándo ( Enviar ). Y ( cola ). Y ( Recuperar ). Hacer ( s => { Enviar ( s ); devolver Recuperar (); }); }                

Referencias

Enlaces externos