epoll:我必须使用多线程

时间:2017-05-27 15:39:34

标签: linux multithreading server epoll

我已获得here关于epoll的基本知识。我知道epoll可以监控多个FD并处理它们。

我的问题是:重型事件可以阻止服务器,所以我必须使用多线程吗?

例如,服务器的epoll正在监视2个套接字A和B.现在A开始向服务器发送大量消息,以便服务器开始读取它们。一秒钟之后,当A仍在发送时,B也开始发送消息。在这种情况下,我需要为这些读取操作创建一个线程吗?如果我不这样做,是否意味着服务器在A完成发送之前没有机会从B获取消息?

1 个答案:

答案 0 :(得分:0)

如果您可以足够快地处理传入的消息(没有阻塞调用,没有繁重的计算),则不需要单独的线程。否则,您将从多线程中受益。

在任何情况下,有助于理解当您只有一个线程时会发生什么,并且您无法足够快地处理消息。如果您正在使用TCP协议,则向您发送数据的计算机将简单地降低其传输速率。使用UDP时,一些传入的数据包将被丢弃。