c++ - 单线程设计还是多线程设计?

标签 c++ multithreading sockets pthreads low-latency

<分区>

所以这是我的场景: 我从一个套接字中读取并根据数据包上的内容将数据包放入适当的队列中。因此,如果我有 10 个队列,将有 10 个 if-else-ifs 或 10 个 switch 语句的情况来选择适当的队列。因此,最多可以进行 10 次比较。

另一种方法可能是要求广播者/服务器在 10 个不同的端口上广播,其中每个端口的馈送都有针对单个特定队列的数据包,在我这边,我可以通过一个单独的线程(或者我可以如果某些端口上的流量较少/不均匀,请使用线程池)。所以现在我不必选择数据包属于哪个队列,但现在引入了 conext 切换现象。

从这里我的智慧和技术知识阻止我走得更远。 关于哪种方法性能更好的任何启发?

最佳答案

这是个人选择。如果流量充足或不足,显然第一种方法更好。由于 thread,它是线程安全的confinement .更容易维护。唯一的问题是 - 如果添加了额外的端口,那么您将不得不修改代码以获得额外的 if 子句。

但在交通繁忙的情况下,这可能会更好。如果缓冲区已满,将丢失较少的数据包。可能会根据内核数量表现得更好,但如果执行不当也可能会出现问题。

如果我是你,我会继续第一个。保持简单。

关于c++ - 单线程设计还是多线程设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13677111/

相关文章:

c++ - 传递对函数的引用

java - 理解 Thread.interrupt() 的用法

java - 从正在运行的线程读取数据

android - NDK 中 undefined reference 错误

c++ - OpenGL:渲染天空盒 cubmap 问题

c++ - 如何通过两次调用 gluUnproject(不使用 gluUnProject)从场景坐标中获取深度值

java - JVM线程的概念以及与OS线程的关系

Java 语音聊天 - 单一输出的混合传入数据

java - groovy和java程序之间通过socket进行通信

java - 如何使用JAVA线程从套接字读取输入