由于某些原因,我必须坚持使用.NET 3.5并且我需要一个来自.NET 4的Barrier类功能.我有一堆线程做了一些工作,我希望它们等待彼此直到完成所有操作.当一切都完成后,我希望他们以类似的方式一次又一次地完成工作.鼓励C#4.0中的障碍和C#3.0中的WaitHandle之间的差异?我决定使用AutoResetEvent和WaitHandle类实现Barrier功能.尽管我的代码遇到问题:
class Program
{
const int numOfThreads = 3;
static AutoResetEvent[] barrier = new AutoResetEvent[numOfThreads];
static Random random = new Random(System.DateTime.Now.Millisecond);
static void barriers2(object barrierObj)
{
AutoResetEvent[] barrierLocal = (AutoResetEvent[])barrierObj;
string name = Thread.CurrentThread.Name;
for (int i = 0; i < 10; i++)
{
int sleepTime = random.Next(2000, 10000);
System.Console.Out.WriteLine("Thread {0} at the 'barrier' will sleep for {1}.", name, sleepTime);
Thread.Sleep(sleepTime);
System.Console.Out.WriteLine("Thread {0} at the 'barrier' with time {1}.", name, sleepTime);
int currentId = …Run Code Online (Sandbox Code Playgroud)