private void monitorNotationExample( object lockObject ) { Monitor.Enter( lockObject ); //Critical Section: Do something Monitor.Exit( lockObject ); }
class Program { static void Main( string[] args ) { AsyncTest test = new AsyncTest( ); Thread thread1 = new Thread( new ThreadStart( test.Sync1 ) ); Thread thread2 = new Thread( new ThreadStart( test.Sync2 ) ); thread1.Start( ); thread2.Start( ); Console.ReadLine( ); } } public class AsyncTest { private object lock1 = new object( ); public void Sync1( ) { Monitor.Enter(lock1); for ( int i = 1; i <= 20; i++ ) { Console.Write( "1 {0}|", i ); Thread.Sleep( 20 ); } Monitor.Exit( lock1 ); } public void Sync2( ) { Monitor.Enter( lock1 ); for ( int i = 1; i <= 20; i++ ) { Console.Write( "2 {0}|", i ); Thread.Sleep( 20 ); } Monitor.Exit( lock1 ); } }
class Program { static void Main( string[] args ) { AsyncTest test = new AsyncTest( ); Thread thread1 = new Thread( new ThreadStart( test.Sync1 ) ); Thread thread2 = new Thread( new ThreadStart( test.Sync3 ) ); thread1.Start( ); thread2.Start( ); Console.ReadLine( ); } } public class AsyncTest { private object lock1 = new object( ); public void Sync1( ) { Monitor.Enter(lock1); for ( int i = 1; i <= 20; i++ ) { Console.Write( "1 {0}|", i ); Thread.Sleep( 20 ); } Monitor.Exit( lock1 ); } public void Sync3( ) { if ( Monitor.TryEnter( lock1 ) ) { Console.WriteLine( Environment.NewLine + "Lock achieved." ); Monitor.Exit( lock1 ); } else { Console.WriteLine( Environment.NewLine + "Lock cannot be achieved." ); } } }
public void Sync4( ) { if ( Monitor.TryEnter( lock1, 100 ) ) { Console.WriteLine( Environment.NewLine + "Lock achieved." ); Monitor.Exit( lock1 ); } else { Console.WriteLine( Environment.NewLine + "Lock cannot be achieved." ); } }
public void Sync6( ) { if ( Monitor.TryEnter( lock1, 1000 ) ) { try { //Critical section } finally { Monitor.Exit( lock1 ); } } else { //else-Fall behandeln } }
Remember Me
a@href@title, strike
Theme based on MadsSimple dasBlog theme by Mads Kristensennewtelligence dasBlog 2.3.9074.18820
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.