with visual threadstart threads thread new net multiple method español book c# multithreading

visual - threadstart c#



Mejor ejemplo de cola de subprocesos/mejores prácticas (5)

Tengo datos que deben ejecutarse en un determinado hilo de fondo. Tengo un código proveniente de todos los otros hilos que necesitan invocar esto. ¿Alguien tiene un buen tutorial o mejor práctica al tener una cola para la sincronización para soportar este requisito de subprocesamiento?






Una de mis soluciones favoritas para este problema es similar al patrón producer/consumer .

Creo un hilo maestro (más o menos el Main() mi programa que contiene un objeto de cola de bloqueo).

Este hilo maestro genera varios hilos de trabajo que hacen que las cosas se salgan de la hebra de bloqueo central y las procesen. Debido a que es una cola de bloqueo de hilos seguros, los bits de sincronización son fáciles: la llamada a TaskQueue.Dequeue() se bloqueará hasta que el productor / hilo principal ponga en cola una tarea.

Puede administrar dinámicamente el número de trabajadores que desea o arreglarlo de acuerdo con una variable de configuración, ya que todos están sacando cosas de la cola, el número de trabajadores no agrega ninguna complejidad.

En mi caso, tengo un servicio que procesa varios tipos diferentes de tasks . Tengo la cola escrita para manejar algo genérico como TaskQueueTask . Luego subclaselo y anulo el método Execute() .

También probé el enfoque .NET de la agrupación de subprocesos, donde puedes incluir cosas en el grupo de manera muy sencilla. Era extremadamente simple de usar pero también proporcionaba poco control, y no garantizaba el orden de ejecución, el tiempo, etc. Se recomienda solo para tareas livianas.