我准备编写一个多线程网络应用程序。目前我想知道什么是我的程序最好的线程模式。整个应用程序最多可处理1000个描述符(本地文件,各种协议的网络连接以及定时器和信号处理的附加描述符)。应用程序将针对Linux进行优化。计划将在普通个人电脑上运行,所以我认为,他们将至少有Pentium 4处理器设计多线程应用程序(寻找设计模式)
这是我目前的想法:
- 一个线程使用的epoll将处理网络I/O 。
- 第二线程将 处理本地状I/O(磁盘I/O, 定时器,信号处理)使用的epoll
- 第三线程 将处理UI(CLI,GTK +或QT)
处理单独线程中的每个网络连接会由于上下文切换过多而导致CPU死亡。
也许有更好的方法来做到这一点?
您是否知道有关设计多核应用程序的任何文档/书籍?我正在寻找如下问题的答案:什么是有理数的线程?等等。