使用RT linux调度的多个TCP套接字

时间:2012-06-08 20:19:48

标签: linux multithreading tcp

如果我使用SCHED_FIFO并将进程优先级设置为1,我如何有效地检查进程管理的多个tcp连接之一何时有可用于处理的数据?

理想情况下,如果多个tcp套接字已准备好处理数据,我想要多线程。

我认为它看起来像无限循环检查每个套接字,但似乎linux调度程序可能有一个解决方案。

1 个答案:

答案 0 :(得分:0)

不确定SCHED_FIFO如何影响您的传统服务器设计。我的意思是接受返回的侦听套接字和套接字的用法。这个想法是,主要线程应该在侦听套接字上被阻塞,并且当接收到新连接时,它应该将accept返回的fd传递给新线程。可以为所有新连接创建新线程,或者您可以使用线程池来限制它并更好地控制。

其他想法可能是使用一个调用fd上的select的线程,主线程可以监听并接受连接,主线程可以对新fd进行排队并发送通知(可能是使用信号或管道)到线程,这是等待选择。一旦收到数据,它就可以使用线程池中的工作线程来分配任务。