进程合作:多进程共同完成一个任务
每一个进程有一段程序,执行不是顺序执行,有些地方需要等待其他进程发发送信号才能执行。
进程同步:
需要让进程走走停停来保证进程合理有序称为进程同步。
但从依靠counter进行语义判断不足以判断到底来了几个生产者,在消费者唤醒时,是不能够唤醒睡眠中的进程。
当有进程睡眠时sem -1
继续有进程睡眠时 sen 再-1
…
当有进程唤醒时 sem ++
当sem >1时,sem++表示新增缓冲区,有空闲的新增缓冲区出现
v(semaphore s)
{
s.value++;
if(s.value <= 0)
{
wakeup(s.queue);
}
}