Pregunta Mejor ejemplo de cola de subprocesos / mejores prácticas [cerrado]


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?


32
2017-12-06 13:32


origen


Respuestas:


Usted podría:


8
2017-12-06 14:19



Revisa Enhebrado en C #, por Joseph Albahari, referencia muy completa sobre multihilo. En particular, él cubre colas productor / consumidor.


31
2017-12-06 15:01



Este es un interesante artículo sobre ThreadPools:

http://www.codeproject.com/KB/threads/smartthreadpool.aspx

Para casos de uso más simples, también podría usar la propia clase ThreadPool de .Net.


5
2017-12-06 14:18



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

Creo un hilo maestro (más o menos mi programa Main()) 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. Dado que es una cola de bloqueo segura para hilos, los bits de sincronización son fáciles: TaskQueue.Dequeue() la llamada se bloqueará hasta que una tarea sea puesta en cola por el productor / hilo principal.

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 lo subclasé y anulo Execute() método.


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.


1
2017-12-06 14:19



Puedes probar esta solución. Le muestra cómo implementar el patrón productor-consumidor. También tiene alguna explicación sobre qué se puede hacer con ella. Como diferentes combinaciones de la cantidad de productores y consumidores.

http://devpinoy.org/blogs/jakelite/archive/2009/01/12/threading-patterns-the-producer-consumer-pattern.aspx

http://devpinoy.org/blogs/jakelite/archive/2009/02/03/threading-patterns-producer-consumer-pattern-examples.aspx


0
2018-02-09 17:01