信号量机制是为两个或多个进程合作提供可靠机制;基本原理:两个或多个进程通过信号合作,一个进程可以被迫在某个位置(或者说是在某种条件下)停止,执行中断操作,进入信号的阻塞队列,直到它接受到特定信号(或者说在某种条件下)从信号阻塞队列中移除并加入就队列;
任何复杂的合作都可以通过适当的信号结构实现,包括共享,互斥等资源访问修改控制;
信号结构:
struct semaphore{
int count;
queueType queue;
};
void semwait(semaphore s){
s.count--;
if(s.count<0){
/*把当前进程插入队列中*/
/*阻塞当前进程*/
}
}
void semSignal(semaphore s){
s.count++;
if(s.count<=0){
/*从进程队列中移除*/
/*把进程从阻塞态转为就绪态*/
}
}