首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否有一个C#等同于Java的CountDownLatch?

在云计算领域,C#和Java是两种常见的编程语言,它们都有类似于CountDownLatch的功能。在C#中,可以使用CountdownEvent类来实现类似于Java中CountDownLatch的功能。

CountdownEvent类是在.NET框架中提供的,它允许一个或多个线程等待某个事件发生,当事件发生时,所有等待的线程都会被释放。CountdownEvent类提供了一个构造函数,该构造函数接受一个整数参数,该参数表示需要发生的事件数。当事件数达到零时,所有等待的线程都会被释放。

以下是一个使用CountdownEvent类的示例代码:

代码语言:csharp
复制
using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        int count = 5;
        CountdownEvent countdownEvent = new CountdownEvent(count);

        for (int i = 0; i< count; i++)
        {
            Task.Run(() =>
            {
                // 模拟执行任务
                Thread.Sleep(1000);
                Console.WriteLine($"任务{Task.CurrentId}完成");
                countdownEvent.Signal();
            });
        }

        countdownEvent.Wait();
        Console.WriteLine("所有任务完成");
    }
}

在上面的示例代码中,我们创建了一个CountdownEvent实例,并将事件数设置为5。然后,我们使用Task.Run方法创建了5个任务,每个任务都会在完成时调用Signal方法来减少事件数。最后,我们调用Wait方法等待所有任务完成。当事件数达到零时,Wait方法将返回,我们可以执行后续操作。

总之,C#中有类似于Java中CountDownLatch的功能,可以使用CountdownEvent类来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券