Linux使用pthread对时间管理的探究
2021-11-17北京邮电大学张彦博
电子世界 2021年20期
北京邮电大学 张彦博
针对理发师问题进行了拓展,考虑多种需求的顾客,多种功能的理发师,在Linux下利用pthread给出多线程解决方案。
传统理发师问题针对一位单一功能的理发师和多位单一需求的顾客,但是在实际应用中,问题往往更加复杂,理发师将会有多种功能,顾客也会有多种需求,比如理发和烫发。拓展过后的理发师问题可以较为方便的拓展到其他领域,因此,需要对传统的理发师问题解法进行改良。本文给出对传统理发师问题更贴近实际的一种拓展,并针对拓展问题给出了解决方案,以供解决同类问题借鉴。
1 问题描述
为了符合实际情况,以利于拓展,添加如下假设:
(1)理发师可以由一种或多种功能(如理发或烫发);
(2)顾客可以有选择多种需求,但一个顾客只能选择一种;
(3)一定条件下顾客可以等待。
一家理发店里有X位理发师,其中N个理发师只会理发,M个理发师可以烫发或理发(烫发优先,没有顾客烫发时,才会理发)。店内有Y把供等候理发顾客坐的椅子。如果没有顾客,则理发师在理发椅上睡觉。当一个需要理发的顾客到来时,他会优先叫醒只会理发的理发师,除非只会理发的理发师已经为他人服务;需要烫发顾客来时,只会找烫发的理发师(如果当前烫发的理发师空闲,则直接为其进行烫发服务;如果当前有理发的顾客,则为该顾客理发完后才为下一位顾客进行烫发服务,当前需要烫发的顾客需等待)。如果X个理发师正在为X个顾客服务时,又有顾客来到,并且如果有空椅子可坐,他们就坐下来等待。……
登录APP查看全文
