diff --git a/hw1/hw1/Program.cs b/hw1/hw1/Program.cs index e0714ee..afb71b4 100644 --- a/hw1/hw1/Program.cs +++ b/hw1/hw1/Program.cs @@ -22,7 +22,7 @@ public void Test() public void P(Semaphore sema) => sema.WaitOne(); public void V(Semaphore sema) => sema.Release(); -// ================================================================================================================ + // ================================================================================================================ // 题目:现在有一个消费者,一个生产者。消费者生产一个蛋糕,消费者消费一个蛋糕。 // 初始时没有蛋糕。两个线程开始的时间不确定。 @@ -30,24 +30,28 @@ public void Test() // 要求:保证消费者消费蛋糕时,生产者已经把蛋糕生产好了 // 修改范围内的代码,允许添加字段或者属性或者方法,使程序满足要求 - + // 提示:使用定义好的 P函数 与 V函数 + public Semaphore produceSem = new Semaphore(1, 1); + + public Semaphore consumeSem = new Semaphore(0, 1); + public void Produce() { // 可以加东西 - + P(produceSem); Producer.ProduceACake(cake); // 这句话不允许改,但可以在前后加代码 - + V(consumeSem); // 可以加东西 } public void Consume() { // 可以加东西 - + P(consumeSem); Consumer.ConsumeACake(cake); // 这句话不允许改,但可以在前后加代码 - + V(produceSem); // 可以加东西 }