static void Main()
{
Thread t1 = new Thread(Thread1);
Thread t2 = new Thread(Thread2);
t1.Start();
Thread.Sleep(100);
t2.Start();
}
static void Thread1()
{
Semaphore sema = new Semaphore(2, 3, "my");
sema.WaitOne();
sema.WaitOne();
Console.WriteLine("Thread1 get the Semaphore : ");
Thread.Sleep(5000);
Console.WriteLine("Thread end");
}
static void Thread2()
{
Semaphore sema = new Semaphore(0, 3, "my");
sema.Release();
bool b2 = sema.WaitOne();
Console.WriteLine("Thread2 get the Semaphore : ");
sema.Release();
}
static void Main()
{
Thread t1 = new Thread(Thread1);
Thread t2 = new Thread(Thread2);
t1.Start();
t2.Start();
}
static void Thread1()
{
bool flag;
Mutex mutex = new Mutex(false , "my",out flag);
Console.WriteLine("Thread1 get the mutex : " + flag);
Console.WriteLine("Thread1 等待3秒");
Thread.Sleep(3000);
Console.WriteLine("Thread1 等待3秒 结束");
mutex.WaitOne();
Thread.Sleep(1000);
Console.WriteLine("Thread1 end");
mutex.ReleaseMutex();
}
static void Thread2()
{
bool flag;
Mutex mutex = new Mutex(true , "my", out flag);
mutex.WaitOne();
Console.WriteLine("Thread2 get the Mutex : "+flag);
Console.WriteLine("Thread2 end" );
//mutex.ReleaseMutex();
}