Tengo un par de situaciones en mi código donde varios subprocesos pueden crear elementos de trabajo que, por diversas razones, no deberían hacerse en paralelo. Me gustaría asegurarme de que el trabajo se realice de forma FIFO, independientemente de qué hilo proceda. En Java, colocaba los elementos de trabajo en un solo subproceso ExecutorService
; ¿hay un equivalente en C#? He improvisado algo con un Queue
y un montón de bloques lock(){}
, pero sería bueno poder usar algo y probarlo.C# equivalente para Java ExecutorService.newSingleThreadExecutor(), o: cómo serializar acceso multiproceso a un recurso
Actualización: ¿Alguien tiene experiencia con System.Threading.Tasks? ¿Tiene una solución para este tipo de cosas? Estoy escribiendo una aplicación de Monotouch, así que quién sabe si podría encontrar una versión de respaldo para poder trabajar, pero al menos sería algo en lo que pensar en el futuro.
Actualización # 2 Para desarrolladores de C# no familiarizados con las bibliotecas de Java, básicamente quiero algo que permita que varios hilos entreguen elementos de trabajo para que todos esos elementos de trabajo se ejecuten en un solo hilo (que no es ninguno de los hilos de llamada).
Si el trabajo debe hacerse de una manera FIFO, ¿por qué crear "varios" subprocesos? ¿Por qué no hacer el trabajo en un solo hilo? – Mark
@ Mark Los diversos hilos existen por otros motivos: parte del trabajo se desencadena por actividad de IU, algunos por respuestas a solicitudes de red, y otros por temporizadores. –
A esta pregunta: "¿cómo serializar el acceso multiproceso a un recurso?" usted mismo ha respondido: utilice la instrucción lock() en sus recursos (o un objeto que los encapsule). – BertuPG