吐槽
书本上的PV操作在讲毛线啊,完全是一头雾水,都是晦涩难懂的解释,甚至有些书本根本就直接将PV操作了,P是什么,V是什么,都是没有任何详细的解释的
信号量
对于信号量就可以认为是一个仓库的操作概念,信号就是反馈一个通知罢了,我这个操作做完了,就给你一个信号,我操作了多少就是一个量的概念,这就是我理解的信号量
P操作
P操作就是从仓库里面拿货,如果仓库里面没有货,那么线程就开始等待了,直到V操作往仓库里添加货物,为了避免P操作一直等待下去,一般会设定一个超时时间
V操作
V操作就是往仓库里面放货,如果仓库满了,线程等待,直到有P操作,从仓库中拿走货物,出现空位
P操作详情
货物个数减1,减了货物之后,货物个数>=0,说明已经拿到货物了,线程继续正常运行,如果<0那么就线程阻塞
V操作详情
货物个数+1,加了货物之后,货物个数<=当前仓库容量说明添加成功,线程继续正常运行,如果>容量,那么线程就阻塞了
互斥与同步
相交进程之间的关系主要有两种,同步和互斥。互斥是指散布在不同进程之间的若干程序片段,当某个进程运行其中一个程序片段的时候,其他进程就不能运行他们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。同步,是指散布在不同程序进程之间的若干程序片段,他们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特ing的任务
同步是一种更为复杂的互斥,而互斥是一种特殊的同步
互斥是两个线程之间不可以同时运行,他们会互相排斥,必须等待一个线程运行完毕,另一个才能够运行,为同步也是不能同时运行的,必须按照某种特定的次序来运行相应的线程!(是一种讲究先后顺序的互斥)