C#多线程经典示例(吃苹果)多线程经典示例(吃苹果)
本文主要讲述了多线程开发中经典示例,通过本示例,可以加深对多线程的理解。
示例概述:示例概述:
下面用一个模拟吃苹果的实例,说明C#中多线程的实现方法。要求开发一个程序实现如下情况:一个家庭有三个孩子,爸爸妈妈不断削苹果
往盘子里面放,老大、老二、老三不断从盘子里面取苹果吃。盘子的大小有限,最多只能放5个苹果,并且爸妈不能同时往盘子里面放苹果,
妈妈具有优先权。三个孩子取苹果时,盘子不能为空,三人不能同时取,老三优先权最高,老大最低。老大吃的最快,取的频率最高,老二
次之。
涉及到知识点:涉及到知识点:
线程Thread 创建并控制线程,设置其优先级并获取其状态。
锁 lock 用于实现多线程同步的最直接办法就是加锁,它可以把一段代码定义为互斥段,在一个时刻内只允许一个线程进入执行,而其他线程
必须等待。
事件EventHandler 声明一个事件,用于通知界面做改变
设计思路:设计思路:
Productor 表示生产者,用于削苹果。
Consumer 表示消费者,用于吃苹果。
Dish 盘子,用于装苹果,做为中间类
EatAppleSmp 的BeginEat()方法,表示开始吃苹果,启动线程
效果图如下【爸爸妈妈削苹果,孩子吃苹果】:
后台输出如下:
Mama放1个苹果
Baba放1个苹果
Dage取苹果吃...
Erdi取苹果吃...
Sandi等待取苹果
Mama放1个苹果
Sandi取苹果吃...
Baba放1个苹果
Dage取苹果吃...
Mama放1个苹果
Baba放1个苹果
Erdi取苹果吃...
Mama放1个苹果
Baba放1个苹果
Dage取苹果吃...
Sandi取苹果吃...
Mama放1个苹果
Baba放1个苹果
Erdi取苹果吃...
Mama放1个苹果
Baba放1个苹果
Dage取苹果吃...
Mama放1个苹果
Baba放1个苹果
Sandi取苹果吃...
Mama放1个苹果
Baba正在等待放入苹果
Erdi取苹果吃...
Baba放1个苹果
Dage取苹果吃...
评论0