Linux 编程:用C或者C++实现producer-consumer问题具体:1.main函数创建producer和consumer两个线程;2.producer从文件读取数据,每个数据包假定是188字节,放到数据队列;3.consumer从数据队列读取数据,作简

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 17:27:12
Linux 编程:用C或者C++实现producer-consumer问题具体:1.main函数创建producer和consumer两个线程;2.producer从文件读取数据,每个数据包假定是188字节,放到数据队列;3.consumer从数据队列读取数据,作简

Linux 编程:用C或者C++实现producer-consumer问题具体:1.main函数创建producer和consumer两个线程;2.producer从文件读取数据,每个数据包假定是188字节,放到数据队列;3.consumer从数据队列读取数据,作简
Linux 编程:用C或者C++实现producer-consumer问题
具体:
1.main函数创建producer和consumer两个线程;
2.producer从文件读取数据,每个数据包假定是188字节,放到数据队列;
3.consumer从数据队列读取数据,作简单统计,第一个字节=0x47或!=0x47;
3.数据文件自己写个程序生成;
4.一旦文件EOF,数据队列也全部变空,打印统计:数据包总数、其中0x47打头的数据包个数、非0x47打头的数据包个数.然后程序退出.

Linux 编程:用C或者C++实现producer-consumer问题具体:1.main函数创建producer和consumer两个线程;2.producer从文件读取数据,每个数据包假定是188字节,放到数据队列;3.consumer从数据队列读取数据,作简
我这样想的,假设文件已经存在了啊
建二个线程,然后主线程挂起,等待子线程都结束了,打印结果,后退出,这个结果可以存在全局变量里.
数据队列也做成全局的,然后做个互斥锁,二个线程只能有一个线程进行队列的操作.
另外,做个全局变量标置位,如果从文件中读取了所有的内容后,将这个标志位置上,后此线程退出,这时候等consumer读取完所有的数据队列后,此线程即可退出.当然,这个不用标志位也可以用信号方式实现.
大体就这样了.我觉得我这思路应该可以实现上面的要求,当然,不一定是最好的-_-!