private static async void DoWork3(Object request)
    {
        AccessMode am = (((Int32)request) % 10 == 0) ? AccessMode.Exclusive : AccessMode.Shared;
        await s_arwl.WaitAsync(am);

        Console.WriteLine("Request #{0:00}, Time={1:hh:mm:ss}, Threads={2:00}, Access={3}",
                          request, DateTimeOffset.Now, Process.GetCurrentProcess().Threads.Count, am);

        for (Int64 stop = Environment.TickCount + 1000; Environment.TickCount < stop;)
        {
            ;
        }
        s_arwl.Release();
        s_cde.Signal();
    }