У меня есть базовая очередь выполнения задач (c # WinForms App, которая общается с 3 отдельными системами).Все замечательно, пока один из веб-сервисов не решит не отвечать с обычной скоростью.
Меня не интересует ускорение процесса с помощью многопоточности заданий, но теперь, когда я использую его в работе,Я вижу преимущество в том, что по крайней мере два потока выполняют задания - если один блокирует и это аномалия, другой будет продолжать работать, а если оба блокируют, то, вероятно, любое количество потоков будет, и я просто справлюсь с этим.
Итак, вопрос в том, является ли это общий шаблон, который я только что описал, и есть ли название для этого шаблона и / или какой-то удивительной ссылки или структуры, или что-нибудь, чтобы помочь мне не изобретать какие-либо колеса.
Дополнения на основе комментариев / ответов
Задачи могут выполняться одновременно.Я решил не изучать многопоточный дизайн в целях повышения скорости, но сейчас я рассматриваю его для достижения стабильной производительности в условиях нечастой задержки задач.
Мое предположение состоит в том, что время от времени вызов веб-службы непропорционально дольше завершается, хотя его все же считают исключительным.Это оказывает NON (исправленное) незначительное влияние на общее время выполнения, скажем, N заданий, если среднее время выполнения составляет 1 секунду (включая множество разрозненных вызовов веб-службы) и 0,0001% времени, которое веб-служба занимает15 секунд на ответ.
Является ли пул потоков еще одним способом сказать: «раскрутить рабочие потоки и управлять их состоянием вручную»?Или есть что-то, что может помочь мне справиться со сложностью?Я беспокоюсь о том, что вероятность появления ошибки (й) растет пропорционально преимуществам в этом случае ...
Я думаю, что я ищу что-то похожее на пул потоков, но тот, который только раскручивает дополнительныепотоки при обнаружении задержки.
Если кто-нибудь может дать мне больше информации о том, что один из комментариев называет потоком кражи работы, это звучит многообещающе.
Причина, по которой я этого не сделалКомпонент BackgroundWorker используется потому, что, похоже, он создан для случая, когда вы знаете, сколько рабочих вам нужно, и я бы в идеале оставил дизайн гибким
PS: Еще раз спасибо.Спасибо!