+using System;
+using System.Threading;
+
+class Driver
+{
+
+ static readonly Mutex[] mutexes = new Mutex[2];
+
+ public static void Main(string[] args)
+ {
+ for (int i = 0; i < mutexes.Length; i++) {
+ mutexes [i] = new Mutex();
+ }
+
+ Thread thread1 = new Thread(() => {
+ for (int i = 0; i < 1; i++) {
+ int idx = -1;
+ try {
+ idx = WaitHandle.WaitAny (mutexes);
+ Console.WriteLine($"Thread 1 iter: {i} with mutex: {idx}");
+ } finally {
+ if (idx != -1)
+ mutexes [idx].ReleaseMutex();
+ }
+ }
+
+ Console.WriteLine("Thread 1 ended");
+ });
+
+ thread1.Start();
+ thread1.Join();
+
+ Thread thread2 = new Thread(() => {
+ for (int i = 0; i < 1000; i++) {
+ int idx = -1;
+ try {
+ idx = WaitHandle.WaitAny (mutexes);
+ Console.WriteLine($"Thread 2 iter: {i} with mutex: {idx}");
+ } finally {
+ if (idx != -1)
+ mutexes [idx].ReleaseMutex();
+ }
+ }
+
+ Console.WriteLine("Thread 2 ended");
+ });
+
+ thread2.Start();
+ thread2.Join();
+ }
+}
\ No newline at end of file