1

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

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

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

4

1 回答 1

0

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

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

于 2012-06-17T15:52:14.420 回答