【发布时间】:2013-08-16 17:55:15
【问题描述】:
我想了解一些使用多线程的高性能服务器程序的问题。
-
epoll 可以处理 TCP 套接字监听和套接字连接,我可以在主线程中使用 epoll_wait,如果有任何套接字连接来,程序可以在工作线程中接受连接和接收数据。工作线程之间没有冲突。我说的对吗?
udp是一个无连接协议,我们可以在所有工作线程中同时使用recvfrom函数吗?主线程只是使用 epoll 来通知工作线程接收数据。 (假设我可以单独处理每个 UDP 数据包)。
-
这是一个 UDP 服务器。 我将它设置为与非阻塞套接字一起使用。我在主线程中接收数据并处理它,然后将它发送到任务队列,如果任务队列有数据,程序唤醒工作线程并锁定任务队列,然后从任务队列中获取数据,解锁任务队列,以便其他工作线程可以从任务队列中获取任务,然后处理它。
这是一个好的多线程 UDP 服务器吗?我不确定。 有没有另一种高性能的UDP服务器设计。
我对这个问题很困惑,非常感谢!
【问题讨论】:
-
越高越好
标签: linux multithreading