【发布时间】:2015-09-12 16:09:27
【问题描述】:
我正在努力提高在 linux 系统上运行的用 C 语言编写的网络应用程序的性能。
现在编写的程序从套接字接口读取数据包,对其进行一些处理,然后将其添加到发送队列中。
我对多线程编程很陌生,但我熟悉基本概念(互斥锁、条件信号等)。 我正在尝试实现一个解决方案,其中一组工作线程传递从接口读取的内容,然后它们执行以下工作。
我的问题是,如果第一个线程读取第一个数据包,而第二个线程读取第二个数据包,我如何确保将数据包添加到发送队列的顺序与读取的顺序相同。
【问题讨论】:
-
这与并行工作的全部意义相矛盾,不是吗?
-
接收线程应该对数据包进行排序,而不是工人。
-
处理部分浪费了大量时间,因此如果并行处理多个数据包,则可以节省时间...我的问题是如何以与读取相同的顺序添加结果.. .考虑到处理时间大致恒定
-
你的数据流有点不清楚。你有一个线程读取数据包,是吗?数据包排队,是吗?处理线程从队列中获取数据包并处理它们,是吗?好的,一旦处理线程处理了数据包,数据包会发生什么?他们去哪儿了?
-
我的意思是,将序列号添加到数据包结构中,然后使用线程安全容器存储乱序数据包,直到所有先前的数据包都到达,这将非常容易。跨度>
标签: c multithreading sockets pthreads