c++ - 在单线程或单独线程中接收/发送?

标签 c++ tcp zeromq

我在讨论客户端应用程序中的多线程时被告知使用单独的线程接收数据和使用另一个线程发送数据不是可行的方法。

为什么?

据我所知,TCP 是全双工的,所以这是否会提高性能?

最佳答案

有一个专用的发送线程和一个专用的接收线程是不好的,原因有两个。

首先,这意味着每次从接收到发送都需要上下文切换,除非您同时进行这两项操作。

其次,这意味着在接收查询、制定响应、然后发送该响应的典型路径中,数据需要从一个线程传递到另一个线程,从而耗尽缓存。

就是说,如果性能不是非常关键并且很适合您的设计,那么它肯定会起作用。只是通常没有优势。

关于c++ - 在单线程或单独线程中接收/发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15549010/

相关文章:

c++ - 强制数组衰减(因为没有更好的标题)

c++ - 当一个套接字在后台执行操作时如何处理两个套接字

http - 有人可以解释这些 apache bench 结果吗,有什么突出的地方吗?

Python ZeroMQ PUSH/PULL——丢失消息?

PHP ZMQ 不能在 Windows 上运行,但可以在 Linux 上运行吗?

c++ - 如何执行键类型和映射的通用打印

c++ - 编译器没有为类的构造函数抛出错误有语法错误

c++ - 在 C++ 中执行期间的 "undefined symbol"

tcp - 一个TCP网络包什么时候会在应用层被分片?

c++ - 如何为 ZAP 实现处理程序?