首先,我不太了解网络编程......
所以,鉴于此,我有一个需要监听3个端口的程序(进程)......两个是TCP,另一个是UDP.
这两个TCP端口将每隔一段时间接收大量数据(可能只有每5分钟或每20秒一次).第三个(UDP)端口正在接收常量数据.现在,将这些监听到不同的线程是否有意义?
例如,当我从其中一个TCP端口收到大量数据时,我不希望我的UDP流中断...这些是网络编程的常见问题吗?
谢谢你们......如果我不清楚,请随时提出澄清问题.
如果有任何影响,我将在Windows上使用Boost库.
编辑:再次阅读之后,我意识到我不是在问一个特定的问题大声笑......我想我只是在寻找关于这个问题以及如何管理多个连接的一些想法/想法/指导.谢谢
通常,除非必要,否则请避开线程.在现代机器上,通过使用单个线程并使用I/O就绪/完成功能,您将获得更好的性能.在Windows中,这是IO完成端口,在Mac OS X和FreeBSD:kqueue的(2),在Solaris上:事件端口,在Linux的epoll,在VMS QIO.等等.
在boost中,这是由boost :: asio抽象的.
线程有用的地方是必须进行重要处理或执行阻塞操作系统调用的地方,这会给网络处理的其余部分增加不可接受的延迟.