我需要有多个线程写入单个缓冲区(连续的内存块)。蛮力方法如下
此方法序列化所有线程,因为在给定时间只有一个线程处于活动状态。这应该是一个瓶颈,因为应用程序花费大部分时间写入缓冲区。
有人可以建议一种在写入单缓冲区时增加并行性的方法吗?
非常感谢提前。
答案 0 :(得分:5)
让您的线程将其数据写入队列。然后,让专用线程从队列写入缓冲区。如果这不够并发,则牺牲固定顺序并使用多个队列。
答案 1 :(得分:1)
如果可能,您可以让线程以不同的大小写入缓冲区的不同位置,这样两个线程不会同时写入同一位置并相应地获取锁定。
答案 2 :(得分:0)
Herb Sutter发表了一篇非常好的文章,几乎描述了这种情况。他讨论了使用active object
来处理写入共享缓冲区的并发问题。您可以访问他的网站并点击链接或this link may work。