一个同步的例子
2008-10-10 13:21
274 查看
今天上操作系统的时,老师讲到进程同步提到售票系统,记得以前看孙鑫老师的视频时也提到过类似的东西。回来后马上动手,用C#实现了一个简单的进程同步。
累了,先睡觉。
using System; using System.Threading; public class ThreadCreat { static int tickets = 100; //没有全局变量,静态变量也一样 //为了使进程同步,需要一个监视器来阻止第二个线程进入一个受保护的代码段 readonly static object _Sync = new object(); public static void ThreadProc1() { // Interlocked.Decrement(ref tickets); //这里不知道是什么,网上提供的方法,但是没用 while (true) { Monitor.Enter(_Sync); try { if (tickets > 0) { Thread.Sleep(1); Console.WriteLine("thread 1 sell:titck leave {0} ", tickets--); } else break; } finally { Monitor.Exit(_Sync); } } } public static void ThreadProc2() { while (true) { // Interlocked.Decrement(ref tickets); Monitor.Enter(_Sync); try { if (tickets > 0) { Thread.Sleep(1); Console.WriteLine("thread 2 sell:titck leave {0} ", tickets--); } else break; } finally { Monitor.Exit(_Sync); } } } public static void Main() { //这里使用的是C#2.0的委托推断语法,不是显示地实例化ThreadStart Thread thread1 = new Thread(new ThreadStart(ThreadProc1)); thread1.Start(); Thread thread2 = new Thread(new ThreadStart(ThreadProc2)); thread2.Start(); // Console.WriteLine("Main thread: do some work."); Thread.Sleep(4000); Console.ReadLine(); } }
累了,先睡觉。
相关文章推荐
- 请给一个java线程同步的例子
- 转贴:一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子
- java线程同步问题(一个理解wait()与notify()的例子)
- 一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子
- 同步 异步 阻塞 非阻塞 的一个例子说明
- 一个简单的C#多线程间同步的例子【转】
- 关于在多线程情况下同步爬虫爬取结果的一个例子
- 一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子 (转)
- 转一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子
- .NET多线程编程(13)——一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子
- 关于同步、异步、阻塞、非阻塞一个通俗易懂的例子