我想使用ThreadPool.RegisterWaitForSingleObject将一个计时器添加到一组线程。我创建了9个线程,并试图让他们每个人都有相同的操作机会,因为如果我只是将它们添加到线程池中,似乎会出现一些小小的匮乏。我也尝试执行手动重置事件,因为我希望所有9个线程在继续之前退出。正确的方式来实现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);
但是,如果我使用resetEvents []或ev既不能正常工作也没关系。我能够实现这个还是我(可能)误解他们应该如何工作。
感谢,R.
谢谢,我还没有时间来测试这个,但感谢布赖恩的答案。 – flavour404 2010-09-27 19:23:45