Сценарий, с которым я столкнулся, выглядит следующим образом. Поскольку ThreadPool - 1 экземпляр на процесс, так что мой вопрос в том, что будет метод 1 отменять задачи, поставленные в очередь методом 2 через 3 секунды?Можно ли группировать/изолировать задачи в ThreadPool при использовании WaitHandle.WaitAll?
запрос HTTP приходит в
*method 1 gets executed first*: ThreadPool.QueueUserWorkItem x 3 WaitHandle.WaitAll for 3 seconds *method 2 gets executed after method 1*: ThreadPool.QueueUserWorkItem x 10 WaitHandle.WaitAll for 10 seconds
К сожалению, я думаю, что я совершенно не понял использование WaitHandle. Кажется, что если я сделаю ниже, все будет работать по своему желанию. Извините за путаницу.
var calls = new ManualResetEvent[5];
//ThreadPool.QueueUserWorkItem blah...
WaitHandle.WaitAll(calls, timeOut);
Но я все еще думаю, что будет происходить, когда метод 1 затопил пул потоков с длительными задачами и методом 2 ожидает только в течение 1 секунды. Будет ли метод 2 получать результаты обратно, потому что он не ждет достаточно долго.
Спасибо.
Я не вижу, где у вас будет состояние гонки здесь ... это метод 2, используя данные из метода 1? Существует ли явное взаимодействие между этими двумя методами? – Kiril