c - 如何优化运行大量循环的两个线程

标签 c linux multitasking

我有更多概念性问题。 假设一个程序运行两个线程。 两个线程始终在循环运行。 一个线程负责流式传输数据,另一个线程负责接收第一个线程必须流式传输的文件。 因此,文件传输线程循环接收写入文件的数据,流线程根据需要从该文件读取数据并进行流传输。

我在这里看到的问题是,当文件传输占用太多 CPU 周期从而导致流线程滞后时,如何避免饥饿?

知道流传输器传输数据的速度远远慢于文件传输接收数据的速度,我如何才能在这两个线程之间有效地共享 CPU。

感谢您的建议。

最佳答案

此类问题通常可以通过使用某种流量控制来解决:

当接收者忙碌时阻止发送者。

这也会导致问题:如果您的程序必须能够快进(向前查找), 那么这不是一个好主意。

就您的情况而言,当文件中的非流数据超过 2MB 时,您可以阻止文件传输线程。当未流式传输的数据少于 1MB 时恢复。

关于c - 如何优化运行大量循环的两个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210162/

相关文章:

c - 如何在 GCC x86 内联汇编中使用地址常量

c++ - 声明一个没有 const 的 C 风格的字符串是不是很糟糕?如果是这样,为什么?

c - sscanf 的工作

audio - 音频播放和多任务

c - 免费异常(exception)c

linux - glUseProgram() GL_INVALID_OPERATION 1282 在 Ubuntu Gnome 17.04 Intel HD4000 上

java - Linux下使用 'ps'命令,如何查看实时数据?

linux - 如何保存对 OS X Yosemite 终端中编辑的文件的更改?

java - 更多的多任务 java 问题

php - 使用 PHP 从 C 应用程序的 STDOUT 读取数据