PV操作 苹果橘子问题 C#

多线程处理

  • 问题描述
  • 问题分析
  • 代码实现

问题描述

桌上有一只盘子,每次只能放一只水果,爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子里的苹果

问题分析

Semaphore(信号量)三个:plate(互斥),apple,orange。
Thread(线程)四个:father,mother,son,daughter。

代码实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;namespace 苹果桔子
{class Program{private static Semaphore plate, apple, orange;static void Main(string[] args){plate = new Semaphore(1, 1);apple = new Semaphore(0, 1);orange = new Semaphore(0, 1);Thread father = new Thread(Father); Thread mother = new Thread(Mother);Thread son = new Thread(Son);       Thread daughter = new Thread(Daughter);father.Start();                    daughter.Start();mother.Start();                    son.Start();}protected static void Father(){for (; ; ){plate.WaitOne();    Console.WriteLine("爸爸放入一个苹果");      apple.Release();}}protected static void Mother(){for (; ; ){plate.WaitOne();    Console.WriteLine("妈妈放入一个桔子");    orange.Release();}}protected static void Son(){for (; ;){orange.WaitOne();  Console.WriteLine("儿子吃掉桔子");       plate.Release();      Console.WriteLine("盘子为空\n");}}protected static void Daughter(){for (; ;){apple.WaitOne();  Console.WriteLine("女儿吃掉苹果");     plate.Release();    Console.WriteLine("盘子为空\n");}}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部