Record arrivals at a countdown barrier and report whether it released.

Countdown Barrier Coordination Report

CountdownBarrierCoordinationReport.cs
using System;
using System.Threading;

class Program
{
    static void Main()
    {
        int arrivals = ;
        int needed = 3;
        var barrier = new CountdownEvent(needed);
        int signaled = 0;

        for (int i = 0; i < arrivals; i++)
        {
            barrier.Signal();
            signaled++;
        }

        int remaining = barrier.CurrentCount;
        bool released = barrier.IsSet;

        string status;
        if (signaled == 0)
        {
            status = "waiting";
        }
        else if (released)
        {
            status = "released";
        }
        else
        {
            status = "partial";
        }

        Console.WriteLine("arrivals=" + arrivals + " signaled=" + signaled + " remaining=" + remaining + " " + status);
    }
}
using System;
using System.Threading;

class Program
{
    static void Main()
    {
        int arrivals = ;
        int needed = 3;
        var barrier = new CountdownEvent(needed);
        int signaled = 0;

        for (int i = 0; i < arrivals; i++)
        {
            barrier.Signal();
            signaled++;
        }

        int remaining = barrier.CurrentCount;
        bool released = barrier.IsSet;

        string status;
        if (signaled == 0)
        {
            status = "waiting";
        }
        else if (released)
        {
            status = "released";
        }
        else
        {
            status = "partial";
        }

        Console.WriteLine("arrivals=" + arrivals + " signaled=" + signaled + " remaining=" + remaining + " " + status);
    }
}
using System;
using System.Threading;

class Program
{
    static void Main()
    {
        int arrivals = ;
        int needed = 3;
        var barrier = new CountdownEvent(needed);
        int signaled = 0;

        for (int i = 0; i < arrivals; i++)
        {
            barrier.Signal();
            signaled++;
        }

        int remaining = barrier.CurrentCount;
        bool released = barrier.IsSet;

        string status;
        if (signaled == 0)
        {
            status = "waiting";
        }
        else if (released)
        {
            status = "released";
        }
        else
        {
            status = "partial";
        }

        Console.WriteLine("arrivals=" + arrivals + " signaled=" + signaled + " remaining=" + remaining + " " + status);
    }
}
countdown barrier A coordination report can record how many awaited arrivals reached a barrier. A `CountdownEvent` starts with a needed count, and each `Signal` records one arrival without blocking. While arrivals remain below the needed count the barrier is partial, and once enough arrivals have signaled the barrier is released. The status line summarizes whether the barrier stayed waiting, partial, or released after the recorded arrivals.