生产中-消费者问题
char buffer[8];
Semaphore emptyBuffers(8); //设置一个资源信号量empety表示仓库中目前空闲位置的数量
Semaphore fullBuffers(0);//设置一个资源信号量full表示仓库中目前满的位置数量
int main()
{
ITP( false );
ThreadNew( "Writer" , Writer , 0 );
ThreadNew( "Reader" , Reader , 0);
RunAllThread();
}
void Writer()
{
for(int i=0;i<40;i++){
char c = PrepareRandomChar();
SemaphoreWait( emptyBuffer ); //减少
buffer[i%i] = c;
SemaphoreSignal( fullBuffer );
}
}
void Reader()
{
for(int i=0;i<40;i++){
SemaphoreWait( fullBuffers );
char c = buffer[i%8];
SemaphoreSignal( emptyBuffers );
ProcessChar( c );
}
}
编程范式16
最新推荐文章于 2024-02-29 21:52:47 发布