Le scénario auquel je fais face est le suivant. Parce que ThreadPool est 1 instance par processus, ma question est que la méthode 1 annulera-t-elle les tâches mises en file d'attente par la méthode 2 après 3 secondes?Est-il possible de grouper/isoler des tâches dans ThreadPool lors de l'utilisation de WaitHandle.WaitAll?
demande http vient
*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
Désolé, je pense que je suis totalement mal compris l'utilisation de WaitHandle. Il semble que si je fais ci-dessous tout fonctionnera comme souhaité. Donc désolé pour la confusion.
var calls = new ManualResetEvent[5];
//ThreadPool.QueueUserWorkItem blah...
WaitHandle.WaitAll(calls, timeOut);
Mais je pense encore ce qui se passera lorsque la méthode 1 inondé pool de threads avec de longues tâches en cours d'exécution et la méthode 2 attend que pour 1 seconde. La méthode 2 retrouvera-t-elle ses résultats parce qu'elle n'attend pas assez longtemps.
Merci.
Je ne vois pas où vous auriez une condition de concurrence ici ... est la méthode 2 en utilisant les données de la méthode 1? Existe-t-il une interaction explicite entre les deux méthodes? – Kiril