生产中-消费者问题
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
最新推荐文章于 2025-06-23 09:46:55 发布
本文介绍了一个典型的生产者-消费者问题的实现案例,通过使用信号量emptyBuffers和fullBuffers来控制缓冲区中的数据填充与读取过程。该示例采用循环缓冲区的方式,实现了生产者线程写入字符到缓冲区,而消费者线程从缓冲区读取字符并处理。
1209

被折叠的 条评论
为什么被折叠?



