有三个进程P1,P2,和C,它们共享一个缓冲区buf,进程P1反复地从设备上读一个记录信息,并将其存入buf;P2反
复地从另一个设备上读一个记录信息,也将其存入buf,进程C将buf中的记录信息取出,并加工处理。如果buf只能存储一个记录,只有在进程C读取信息后,才能存储下一个记录,同...
复地从另一个设备上读一个记录信息,也将其存入buf,进程C将buf中的记录信息取出,并加工处理。如果buf只能存储一个记录,只有在进程C读取信息后,才能存储下一个记录,同时规定,P1或P2不能连续两次向buf存放记录,且在初始状态它们中哪一个先向buf存放信息都是允许的。请用信号量机制实现进程P1,P2和C的并发执行
展开
1个回答
展开全部
加标记位
flag1=false
flag2 =false
flag3 =true
每次p1要存buf动作,判断flag3是否为true并判断flag1是否为false,如真则存,然后将flag1标记为true,flag3标记为false
每次p2要存buf动作,判断flag3是否为true并判断flag2是否为false,如真则存,然后将flag2标记为true,flag3标记为false
每次进程c判断flag1or flag2是否为true,则读取数据,然后标记flag3=true
flag1=false
flag2 =false
flag3 =true
每次p1要存buf动作,判断flag3是否为true并判断flag1是否为false,如真则存,然后将flag1标记为true,flag3标记为false
每次p2要存buf动作,判断flag3是否为true并判断flag2是否为false,如真则存,然后将flag2标记为true,flag3标记为false
每次进程c判断flag1or flag2是否为true,则读取数据,然后标记flag3=true
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询