当前位置: 技术问答>linux和unix
讨论一下如何实现一个生产者与两个消费者的问题(版主们一定要来看看)
来源: 互联网 发布时间:2015-12-09
本文导语: 一个生产进程能生产出实时数据,两个消费者都能消费到生产者所生产出来的所有实时数据。 我的设计思路是: 生产者把生产出来的实时数据放到一个数据区里,当数据区满了,新的数据能刷掉旧的数据。 两个消费...
一个生产进程能生产出实时数据,两个消费者都能消费到生产者所生产出来的所有实时数据。
我的设计思路是:
生产者把生产出来的实时数据放到一个数据区里,当数据区满了,新的数据能刷掉旧的数据。
两个消费者都从这个缓冲区里取数据。
这个思路在linux下应该如何实现,这样的缓冲区应该如何建立,如何保证两个消费进程都能得到
所有的实时数据
谢谢
我的设计思路是:
生产者把生产出来的实时数据放到一个数据区里,当数据区满了,新的数据能刷掉旧的数据。
两个消费者都从这个缓冲区里取数据。
这个思路在linux下应该如何实现,这样的缓冲区应该如何建立,如何保证两个消费进程都能得到
所有的实时数据
谢谢
|
上学的时候写着玩的一个程序
#include
#include
#include
#include
#define BUFFERSIZE 10
sem_t mutex; //互斥信号量,控制对giHead和giTail的互斥访问
sem_t full; //资源信号量,指示当前可用于消费的资源数量
sem_t empty; //资源信号量,指示当前空闲缓冲区的数量
int gaBuffer[BUFFERSIZE];
int giHead, giTail;
void * produce(void *arg)
{
int i;
int temp;
for (i = 0; i
#include
#include
#include
#include
#define BUFFERSIZE 10
sem_t mutex; //互斥信号量,控制对giHead和giTail的互斥访问
sem_t full; //资源信号量,指示当前可用于消费的资源数量
sem_t empty; //资源信号量,指示当前空闲缓冲区的数量
int gaBuffer[BUFFERSIZE];
int giHead, giTail;
void * produce(void *arg)
{
int i;
int temp;
for (i = 0; i
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。