当前位置: 技术问答>linux和unix
有关信号量和PV操作问题
来源: 互联网 发布时间:2017-05-02
本文导语: 生产者-消费者问题是典型的进程同步问题,这些进程必须按照一定的生产率和消费率来访问共享缓冲区,用P、V操作解决生产者和消费者共享单缓冲区的问题,可设置两个信号量empty和 full,其初值分别为1和0,empty指...
生产者-消费者问题是典型的进程同步问题,这些进程必须按照一定的生产率和消费率来访问共享缓冲区,用P、V操作解决生产者和消费者共享单缓冲区的问题,可设置两个信号量empty和
full,其初值分别为1和0,empty指示能否想缓冲区放入产品,full指示能否从缓冲区取出产品。
typedef struct semaphore{
int value;
struct pcb *list;
};
int B;
semaphore empty;
semaphore full;
empty=1;
full=0;
cobegin
process producer(){ process consumer(){
while(true){ while(true){
produce(); P(full);
P(empty); take() from B;
append () to B; V(empty);
V(full); consume();
} }
} }
coend
有木有人解释一下这些代码什么意思啊?看了半天都不太懂.....help!
full,其初值分别为1和0,empty指示能否想缓冲区放入产品,full指示能否从缓冲区取出产品。
typedef struct semaphore{
int value;
struct pcb *list;
};
int B;
semaphore empty;
semaphore full;
empty=1;
full=0;
cobegin
process producer(){ process consumer(){
while(true){ while(true){
produce(); P(full);
P(empty); take() from B;
append () to B; V(empty);
V(full); consume();
} }
} }
coend
有木有人解释一下这些代码什么意思啊?看了半天都不太懂.....help!
|
标记一下回头看