优化并发写入缓冲区

Lio*_*art 1 c++ multithreading

我需要有多个线程写入单个缓冲区(连续的内存块)。暴力破解方法如下

  1. 要写入缓冲区的线程将获得缓冲区锁定
  2. 整个缓冲区被锁定,因此只有获得锁定的线程才能修改缓冲区。
  3. 线程写入缓冲区。
  4. 线程解锁缓冲区。

此方法序列化所有线程,因为在给定时间只有一个线程处于活动状态。事实证明这是一个瓶颈,因为应用程序花费大量时间写入缓冲区。

有人可以建议一种在写入单个缓冲区时增加并行度的方法吗?

提前谢谢了。

Pet*_* G. 5

让您的线程将其数据写入队列。然后,让专用线程从队列写入缓冲区。如果那不是足够的并发,则牺牲固定的顺序并使用多个队列。