摘要: 一、一个生产者、一个消费者共享一个缓冲区 int B; semaphore empty; //可以使用的空缓冲区数 semaphore full; //缓冲区内可以使用的产品数 empty=1; //缓冲区内允许放入一件产品 full=0; //缓冲区内没有产品 process producer() 阅读全文
posted @ 2020-04-30 22:59 创造bug的夫 阅读(1156) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 有五个哲学家围坐在一圆桌旁,桌中央有一盘通心面,每人面前有一只空盘于,每两人之间放一把叉子。每个哲学家思考、饥饿、然后吃通心面。为了吃面,每个哲学家必须获得两把叉子,且每人只能直接从自己左边或右边去取叉子。 解决方案: 至多允许四个哲学家同时吃; Semaphore fork[5]={1 阅读全文
posted @ 2020-04-30 22:46 创造bug的夫 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子 如果没有顾客,理发师便在理发椅上睡觉 一个顾客到来时,它必须叫醒理发师 如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开 程序模型: int waiting=0;//等候理发顾客数 int CH 阅读全文
posted @ 2020-04-30 22:36 创造bug的夫 阅读(1881) 评论(1) 推荐(0) 编辑
摘要: 有两组并发进程:读者和写者,共享一个文件F 读者可以同时读取文件 读者和写者不能同时对文件进行操作 两个读者也不能同时对文件进行操作 读者优先模型: 读者不释放写者的临界区资源,写者就不能进行操作 int readcount=0;//读进程计数 semaphore writeblock,mutex; 阅读全文
posted @ 2020-04-30 01:28 创造bug的夫 阅读(512) 评论(0) 推荐(0) 编辑