Es este un uso adecuado de la ThreadPool? ¿Puedo estar seguro de que va a empezar un hilo para cada tarea?

StackOverflow https://stackoverflow.com/questions/719751

Pregunta

    protected override void OnStart(String[] args)
    {
        ResultManager.PrepareCache();
        ThreadPool.QueueUserWorkItem(ResultQueue.Process);
        ThreadPool.QueueUserWorkItem(StatusUpdater.UpdateStatus);
        ThreadPool.QueueUserWorkItem(GeneralQueue.RestartHungTests);
        ThreadPool.QueueUserWorkItem(ResultManager.SyncroniseResultsTable);
        ThreadPool.QueueUserWorkItem(GeneralQueue.RecoverLostResults);
        ThreadPool.QueueUserWorkItem(BrowserTestStartInfo.FillQueues);
        ThreadPool.QueueUserWorkItem(MailAppAccount.FillQueues);
    }

Cada una de estas tareas dirigidas por la duración de la vida del servicio de Windows. Siempre he pegado a la ThreadPool para este tipo de cosas, debería estar empezando hilos normales? ¿Puedo estar seguro de que el ThreadPool tendrá suficientes subprocesos disponibles para ejecutar cada tarea? Si SetMaxThreads a 7, se me tenga problemas más adelante porque estos hilos no abortan? ¿Es seguro para fijarlo a algo mucho más alto?


Editar:

Siempre quiero los 7 hilos que se ejecutan simultáneamente, y nunca abortar - debería ser incluso utilizando hilos? ¿Hay alguna otra cosa más adecuado para este tipo de tareas en ejecución perpetuamente?

Cada tarea se ejecuta un método particular cada x minutos.

¿Fue útil?

Solución

Esto no es un uso apropiado del grupo de subprocesos. Basta con crear hilos normales, ya que son de larga vida. La sobrecarga de crear los hilos no importa, ya que sólo va a crear una vez.

Otros consejos

Como dice Juan, esto no es una buena idea. La razón es que el threadpool tiene un número limitado de temas, y que está utilizando un gran número de ellos y nunca devolverlos. El subprocesos está diseñado para poner en común el uso de hilo para los hilos de corta vida.

En realidad, no necesita manejar los hilos ya que viven la vida útil de la aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top