J'essaie d'utiliser ThreadPool.RegisterWaitForSingleObject pour ajouter une minuterie à un ensemble de threads. Je crée 9 threads et j'essaye de donner à chacun d'entre eux une chance égale d'opération car pour le moment il semble y avoir un peu de famine si je les ajoute juste au pool de threads. J'essaie également d'implémenter un événement de réinitialisation manuelle car je souhaite que tous les 9 threads soient fermés avant de continuer. Quelle est la meilleure façon de s'assurer que chaque thread dans le pool de threads a une chance égale de courir car la fonction que j'appelle a une boucle et il semble que chaque thread (ou celui qui court en premier) reste bloqué dedans et les autres n'ont pas la chance de courir.La bonne façon d'implémenter ThreadPool.RegisterWaitForSingleObject
resetEvents = new ManualResetEvent[table_seats];
//Spawn 9 threads
for (int i = 0; i < table_seats; i++)
{
resetEvents[i] = new ManualResetEvent(false);
//AutoResetEvent ev = new AutoResetEvent(false);
RegisteredWaitHandle handle = ThreadPool.RegisterWaitForSingleObject(autoEvent, ObserveSeat, (object)i, 100, false);
}
//wait for threads to exit
WaitHandle.WaitAll(resetEvents);
Cependant, il n'a pas d'importance si j'utilise resetEvents [] ou ev ne semble fonctionner correctement. Suis-je en mesure de mettre en œuvre ceci ou suis-je (probablement) mal comprendre comment ils devraient travailler.
Merci, R.
Merci, je n'ai pas encore eu le temps de le tester mais merci Brian pour la réponse. – flavour404