示例#1
0
        //конструкция пользовательского режима - аналог lock
        static void SpinLock()
        {
            SinchroSpinLock   e = new SinchroSpinLock();
            ISinchroThreading o = e; //т.к SinchroSpinLock структура, будет передаваться копия в разделяемый ресурс, соответственно синхронизация не будет работать

            for (int i = 0; i < 3; i++)
            {
                Task.Run(() => SharedResourse(o));
            }
        }
示例#2
0
 static private void SharedResourse(ISinchroThreading s)
 {
     s.Enter();
     if (s is SynchroMutex)
     {
         s.Enter();
     }
     Thread.Sleep(500);
     Console.WriteLine("Thread {0} started!", Thread.CurrentThread.ManagedThreadId);
     Thread.Sleep(100000);
     Console.WriteLine("Thread {0} done!", Thread.CurrentThread.ManagedThreadId);
     s.Exit();
     if (s is SynchroMutex)
     {
         s.Exit();
     }
 }