医院候诊问题
问题描述:
医院某科室,有医生m名
现有病人n名,先后到达
病人病情轻重各有不同(分k级),重的先就诊;病症相同的,先来的先就诊。
模型假设:
1. 病人挂完号后进入对应的科室,每天病人数目随机
2. 每个科室有一定数量的医生,一开始的时候,所有医生都空闲(即可以接待病人)。
3. 每个科室需要安排一位医生或者护士,专门判断一下新来的病人病情的严重情况,这个判断不需要太多时间,给出大致的情况即可。给出严重情况后,再排队。
4. 排队的病人按照次序,依次随机分配给正在空闲的医生。如果没有空闲的医生,那么就所有病人都要等待;反之,如果没有病人,那么所有医生保持空闲状态。
5. 一位医生每次只能看一个病人,每次看病需要一定时间。
6. 医生上班时间有限,下班后不再看病。
解决方案:
生产者消费者模型:
1. 设置一个病人的优先队列,按照优先级由高到低,分段排队,最开头的是优先级最高的病人;如果优先级相同,那么按照先来后到的顺序排队。
2. 程序模拟医院排队就诊,主线程一开始生成m个“医生”线程,代表有m个医生,每一个线程安排一位医生对象;另开一个“病人”线程,用来轮询是否有新