C 带fifo的线程
我有一个下面的应用程序,线程1读取一个文件并放入FIFO,然后线程2读取该FIFO并处理数据并发送到网络套接字,线程3从网络套接字接收数据,然后将结果保存到文件2,但有时接收到的数据必须由线程2重新处理,所以问题是最好的做法是什么?我需要再次发送到FIFO吗?或者在线程3和线程2之间有另一个fifo?或者两者都没有 文件1-->线程1-->FIFO-->线程2-->网络套接字 网络套接字-->线程3-->文件2 顺便说一句,上面是我的一个例子,实际的程序将有许多线程从FIFO读取并发送到网络,不确定这样使用FIFO是否会导致延迟或成为瓶颈 谢谢你的帮助。嗯 为什么不使用select system call来监视文件和套接字描述符数组,有什么特殊原因吗?这可以简化代码,如图所示 您使用的是pthreads还是类似于boost线程库的东西C 带fifo的线程,c,multithreading,ipc,fifo,C,Multithreading,Ipc,Fifo,我有一个下面的应用程序,线程1读取一个文件并放入FIFO,然后线程2读取该FIFO并处理数据并发送到网络套接字,线程3从网络套接字接收数据,然后将结果保存到文件2,但有时接收到的数据必须由线程2重新处理,所以问题是最好的做法是什么?我需要再次发送到FIFO吗?或者在线程3和线程2之间有另一个fifo?或者两者都没有 文件1-->线程1-->FIFO-->线程2-->网络套接字 网络套接字-->线程3-->文件2 顺便说一句,上面是我的一个例子,实际的程序将有许多线程从FIFO读取并发送到网络,不
这些线程是否确实是不同的进程。。。或者这是一个使用pthread_cond_wait()的程序吗?在什么条件下需要重新处理数据?它是线程2首先可以检测到的东西吗?线程2有无限循环,它处理fifo中的任何东西,所以没有线程2检测不到任何东西。我担心的是,有更多的线程从fifo读取数据,不确定这是否会成为瓶颈,但“重新处理”在这种情况下意味着什么?您的意思是“再次将数据发送到线程3”吗。在什么情况下需要重新处理?我使用pthread,一个程序中的所有程序,我不使用pthread_cond_wait()。通常,您使用互斥锁来保护条件变量。这些是多个过程吗?就像我问的那样?…如果只是一个进程,那么没有mmap文件。。。使用pthread_mutex_init()我不使用lock的原因是因为我发送的少于pipe_buff,所以同步将由内核完成,而不是这是一个进程pipe_buf由mkdev或mknod创建的实际FIFO?你应该根据>打开FIFO进行读取,这解决了select的问题。我使用o_nonblock选项打开FIFO,实际上我在这部分或同步方面没有问题,即使有问题,我们忽略它。