使用if语句判断
#define CHAIRS 100
semaphore mutex=1;
int readers=0;
void reader()
{
do
{
P(mutex);
if(readers<CHAIRS)
{
readers++;
填表;
V(mutex);
--------------------------------------------
阅读;
--------------------------------------------
P(mutex);
readers--;
撤销登记;
V(mutex);
}
else
{
V(mutex);
}
}while(1);
}
椅子使用信号量
semaphore mutex=1;
semaphore reader=0;
semaphore emptyseats=100;
void getin()
{
-------------------------------------------------------
emptyseats用于两个线程的同步
如果满了,只有getout后才能有读者getin
-------------------------------------------------------
P(emptyseats);
P(mutex);
--------------------------------------------
mutex用于互斥访问表这个临界变量
填表;
--------------------------------------------
V(mutex);
V(reader);
}
void getout()
{
-------------------------------------------------------
reader用于两个线程的同步,getin后才会有读者getout
-------------------------------------------------------
P(reader);
P(mutex);
--------------------------------------------
mutex用于互斥访问表这个临界变量
撤销登记;
--------------------------------------------
V(mutex);
V(emptyseats);
}