Является ли это подходящим использованием ThreadPool?Могу ли я быть уверен, что он запустит поток для каждой задачи?

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

Вопрос

    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);
    }

Каждая из этих задач выполняется в течение всего срока службы Windows.Я всегда придерживался ThreadPool для такого рода вещей, должен ли я просто запускать обычные потоки?Могу ли я быть уверен, что в пуле потоков будет доступно достаточно потоков для выполнения каждой задачи?Если я установлю maxThreads равным 7, столкнусь ли я с проблемами позже, потому что эти потоки никогда не прерываются?Безопасно ли устанавливать его на что-то намного более высокое?


Редактировать:

Я всегда хочу, чтобы все 7 потоков были запущены одновременно, и они никогда не прерывались - должен ли я вообще использовать потоки?Есть ли что-то еще, более подходящее для такого рода постоянно выполняющихся задач?

Каждая задача запускает определенный метод каждые x минут.

Это было полезно?

Решение

Это неподходящее использование пула потоков.Просто создайте обычные потоки, поскольку они долговечны.Накладные расходы на создание потоков не будут иметь значения, поскольку вы будете создавать их только один раз.

Другие советы

Как говорит Джон, это не очень хорошая идея.Причина в том, что threadpool имеет ограниченное количество потоков, и вы используете большое их количество и никогда не возвращаете их.Threadpool предназначен для объединения использования потоков для недолговечных потоков.

На самом деле вам не нужно управлять потоками, поскольку они живут в течение всего срока службы приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top