笔试题目比较难,不好下手。我是这么回答的:设计此系统其实就是找到一个平衡点对资源进行调度。 2份牛奶1份发酵剂准备好之前,奶酪生产等待;生产完奶酪后即送冷库,冷库达到100份奶酪后,运输车辆启动,冷库达到1000份奶酪时,奶酪生产暂停;货车送出100000份奶酪后,奶酪生产暂停。
类似于生产者消费者问题,信号量和PV操作。void cheeseProduce(void) // 生产奶酪进程{ P(sp); //sp:消耗2份牛奶,1份发酵剂 生产奶酪;V(sp); //生产牛奶和奶酪}void car(void) // 运输车进程{ P(sp); //冷库达到100份奶酪 运输车启动 V(sp); //往冷库存放奶酪}void cold (void) // 冷库进程{P(sp); //冷库奶酪空间减少 冷库达到1000奶酪,生产暂停 V(sp); //运输奶酪释放冷库空间}void cheese (void) // 奶酪进程{ P(sp); //需要生产的奶酪数量减少 生产奶酪到100000,停止生产 V(sp); //配送奶酪 }
其实也可以把这个奶酪生产比作为奶酪生产是工作线程(worker),这个工作线程需要另外两个工作线程提供两类计算数据,冷库是内存,运输车辆是网络带宽,100000份奶酪是工作线程生产的数据总量。
...查看更多