【发布时间】:2012-12-17 03:49:19
【问题描述】:
我有下面的应用程序,其中线程 1 从文件中读取并放入 FIFO,然后线程 2 读取该 FIFO 并处理数据并发送到网络套接字,线程 3 正在从网络套接字接收数据,然后将结果保存到file2 但有时接收到的数据必须由 thread2 重新处理,所以问题是最好的做法是什么?我需要再次发送到 FIFO 吗?或者在线程 3 和线程 2 之间有另一个 fifo?还是都没有?
File1 --> 线程 1 --> FIFO --> 线程 2 --> 网络套接字
网络套接字 --> 线程 3 --> 文件 2
顺便说一句,以上是我的一个示例,实际程序会有很多线程从 FIFO 读取并发送到网络,不确定这种方式使用 FIFO 是否会导致延迟或会成为瓶颈。
感谢您的帮助。
【问题讨论】:
-
什么情况下需要重新处理数据?是不是一开始就可以被线程 2 检测到?
-
线程 2 有无限循环,它会处理 fifo 中的任何内容,因此没有线程 2 检测不到任何内容
-
我担心从 FIFO 中读取的数据不止一个,不确定这是否会成为瓶颈
-
当然,但是在这种情况下,“再处理”是什么意思?您的意思是“再次将数据发送到线程 3?”。以及在什么条件下需要重新处理?
标签: c multithreading ipc fifo