我正在一个更大项目的一部分工作,必须从大量的FIFO中读取并正确地重定向它们,具体取决于命令。为了达到这个目的,在无限循环中按顺序读取FIFO。
问题是它消耗了太多资源。我可以理解这个过程总是在进行操作并唤醒处理器,但我想避免这么多的过载。
你有什么其他的想法可以避免这么多的重载吗?
答案 0 :(得分:1)
线程池是否合适? http://en.wikipedia.org/wiki/Thread_pool_pattern
您可以拥有一个不断检查新作品的流程。当队列有某些东西时,可以调度一个线程来处理它。完成后,该线程返回可用线程池(因此名称)。此模型适用于处理许多没有共享状态的小任务。
答案 1 :(得分:0)
正如保罗所说,我认为最好的选择是使用select
。 example that he gave足够清楚,可以理解如何使用它(我无法从手册页中理解它)。这是一个非常有用的工具,它不会是我最后一次使用它。