Синхронизация потоков (переключатель). Реализовать задачу, которая имитирует работу часов

Необходимо реализовать задачу, которая имитирует работу часов. Вот мой пример кода, но он не соответствует условию.
class Clock
    {
        public Clock()
        {
            mreTac = new ManualResetEvent(true);
            mreTic = new ManualResetEvent(true);
        }
 
        public void tik()
        {
            if (mreTac.WaitOne())
            {
                mreTac.Reset();
                lock (syncTic)
                {
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.Write("TIK");
                    Thread.Sleep(50);
                    mreTic.Set();
                }
            }
        }
 
        public void tak()
        {
            if (mreTic.WaitOne())
            {
                mreTic.Reset();
                lock (syncTac)
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("TAK");
                    Thread.Sleep(100);
                    mreTac.Set();
                }
            }
        }
 
        private ManualResetEvent mreTic, mreTac;
        private object syncTic = new object();
        private object syncTac = new object();
    }
Никак не могу разобраться с синхронизацией. Буду рад помощи, а также ссылкой на литературу в контексте c#
2 ответа

У Шилдта есть рассмотрение подобной задачи.


Просмотрел, но в том примере алгоритм работы отличается от того, что нужен мне.