作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一种情况,我正在将我的工作卸载到线程。两部分的“工作”折衷:
我的主线程不断地创建许多数据缓冲区。
我最初考虑的是线程池设计,但可能池中的所有线程都在等待 I/O。
如果我在每次创建新 dataBuffer 时都创建一个新线程,我会看到创建了大量线程。这可能会有内容切换的开销,但由于上下文切换,我的 CPU 周期不会被浪费。
管理这种情况的好的设计是什么?
最佳答案
如果我能帮上忙,让我试试。
1. First compress the given data buffer
2. Then write the compressed data to disk
我从您那里了解到您生成了数据缓冲区,您需要将其压缩并存储到磁盘中。
如果顺序很重要并且数据源不是时间密集型的,则不会松散数据直到下一个周期,然后你可以有下面的方法。
生成数据缓冲区
向线程 B 发出信号,说明您有数据。
等待线程A的信号
检索数据并压缩。
向线程 C 发出信号以存储它。
等待线程B的信号
检索压缩数据,并存储到磁盘中。
关于C++:当每个线程都应该同时执行 I/O 和 CPU 密集型任务时的多线程设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34736331/
我是一名优秀的程序员,十分优秀!