小编Kit*_*ter的帖子

如何在.NET 3.5中从.NET 4功能实现Barrier类

由于某些原因,我必须坚持使用.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)

c# multithreading barrier cyclicbarrier

7
推荐指数
1
解决办法
2045
查看次数

标签 统计

barrier ×1

c# ×1

cyclicbarrier ×1

multithreading ×1