PV大题
1.生产者消费者
#include <stdio.h>
#define TRUE true
#define FALSE false
#define N 10
int mutex=1;
int full=0;
int empty=N;
void P(int i){i--;}
void V(int i){i++;}
void Add(){full++;empty--;}
void Delete(){full--;empty++;}
void Deposite()
{
P(empty);
P(mutex);
Add();
V(mutex);
V(full);
}
void Remove()
{
P(full);
P(mutex);
Delete();
V(mutex);
V(empty);
}
2.读者写者问题
#include <stdio.h>
#define TRUE true
#define FALSE false
#define N 10
int Rcount=0;
int countmutex=1;
int mutex=1;
void P(int i){i--;}
void V(int i){i++;}
void write(){}
void read(){}
void Writer()
{
P(mutex);
write();
V(mutex);
}
void Read()
{
P(countmutex);
if (Rcount==0) P(mutex);
Rcount++;
V(countmutex);
read();
P(countmutex);
Rcount--;
if (Rcount==0) V(mutex);
V(countmutex);
}
3.哲学家进餐问题
#include <stdio.h>
#define TRUE true
#define FALSE false
#define N 10
int Rcount=0;
int countmutex=1;
int mutex=1;
void P(int i){i--;}
void V(int i){i++;}
void write(){}
void read(){}
void Writer()
{
P(mutex);
write();
V(mutex);
}
void Read()
{
P(countmutex);
if (Rcount==0) P(mutex);
Rcount++;
V(countmutex);
read();
P(countmutex);
Rcount--;
if (Rcount==0) V(mutex);
V(countmutex);
}