【发布时间】:2010-10-05 15:17:48
【问题描述】:
我需要让多个线程写入单个缓冲区(连续的内存块)。蛮力方法如下
- 要写入缓冲区的线程将获得缓冲区锁定
- 整个缓冲区被锁定,因此只有获得锁定的线程才能修改缓冲区。
- 线程写入缓冲区。
- 线程解锁缓冲区。
此方法序列化所有线程,因为在给定时间只有一个线程处于活动状态。事实证明,这是一个瓶颈,因为应用程序大部分时间都在写入缓冲区。
有人可以建议一种在写入单个缓冲区时增加并行度的方法吗?
非常感谢。
【问题讨论】:
-
也许对你想要达到的目标有更高的认识有助于提出这个方案的替代解决方案。如果您只有一个缓冲区,迟早会成为瓶颈,但可能会有其他选择(多个缓冲区,缓冲区分区......)
标签: c++ multithreading