我有更多概念性问题。 假设一个程序运行两个线程。 两个线程始终在循环运行。 一个线程负责流式传输数据,另一个线程负责接收第一个线程必须流式传输的文件。 因此,文件传输线程循环接收写入文件的数据,流线程根据需要从该文件读取数据并进行流传输。
我在这里看到的问题是,当文件传输占用太多 CPU 周期从而导致流线程滞后时,如何避免饥饿?
知道流传输器传输数据的速度远远慢于文件传输接收数据的速度,我如何才能在这两个线程之间有效地共享 CPU。
感谢您的建议。
最佳答案
此类问题通常可以通过使用某种流量控制来解决:
当接收者忙碌时阻止发送者。
这也会导致问题:如果您的程序必须能够快进(向前查找), 那么这不是一个好主意。
就您的情况而言,当文件中的非流数据超过 2MB 时,您可以阻止文件传输线程。当未流式传输的数据少于 1MB 时恢复。
关于c - 如何优化运行大量循环的两个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210162/