操作系统信号量,生产者和消费者问题,哲学家问题,我一直没有搞明白,最近找实习,又学习一次,下面是信号量的通俗理解。
P操作(信号量 S)
S = S-1;
if(s>=0)
线程继续执行
if(s<0)
线程阻塞
可以把P操作看成排队,S = S-1,如果S>=0,说明前面还有通道可以通过,不必排队等候;如果S<0,说明前面已经有人在排队了,你需要等候;
V操作
S = S+1;
如果S > 0
该线程继续执行
如果S<=0
该线程去唤醒另一个在该信号量上等待的线程,然后继续执行
S = S+1后,如果S>0,说明没有线程阻塞在该信号量上,不需要唤醒其他线程操作;如果S<=0,说明有线程阻塞在该信号量上,该线程去唤醒其他线程后在执行。
后续再写生产者和消费者,哲学家问题