受控无限循环使用过多资源

标签 c loops infinite-loop

我在一个更大项目的一部分工作,该项目必须从大量 FIFO 中读取并根据命令正确地重定向它们。为实现这一点,FIFO 在无限循环中按顺序读取。

问题是它消耗了太多的资源。我能理解这个过程总是在做操作并唤醒处理器,但我想避免太多的过载。

  • 一个选项是使用信号,但它使处理更加困惑,并且很难避免在处理其中一个命令时中断执行。
  • 另一个选项是使用阻塞读取,但我需要为每个 FIFO 一个进程,因为我不知道谁以及何时发送命令。
  • 另一个选择是休眠,但我认为这不是最佳选择,只休眠几毫秒差别不大(我还没有尝试过)。

您还有其他想法可以避免如此多的重载吗?

最佳答案

线程池是否合适? http://en.wikipedia.org/wiki/Thread_pool_pattern

您可以拥有一个不断检查新工作的进程。当一个队列有东西的时候,那么可以派一个线程去处理。完成后,该线程返回到可用线程池(因此得名)。该模型适用于处理许多没有共享状态的小任务。

关于受控无限循环使用过多资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18161378/

相关文章:

python - 将具有一个共同元素的列表列表组合在一起并保存到单独的文本文件中(python)

prolog - 为什么我会出现无限循环 (Prolog)

c++ - 在 linux 上使用 c++ 中的键退出无限循环

c - 无限循环

统计txt文件中相同单词的数量

c - C 编程中的结构

php - 如何使用php在MySQL中进行多查询循环

构造和解析网络数据包

c - 使用前面的参数来定义后面参数中的 VLA?

c - 在 C 中检测数组的行并查找两个数组的共同词