假设一个 FIFO(一个线程安全的)有项目被添加到它(我们不在乎如何)
|__| |
| | |
|__| |
| | |
|__| V
| d|
|__|
| c|
|__|
| b|
|__|
| a|
现在让我们说项目(一个接一个)应该插入到 另一个并发集合中。
数据插入的速率是动态的。
我想以最快的方式做到这一点。(将所有元素从 转移Fifo
到collection
)。
但我有一个冲突:
我可以使用一根线从 中拉出物品
Fifo
并将它们插入collection
. 但是我不会使用可以帮助我的核心/其他线程。我可以使用多个消费者线程从中获取项目
Fifo
,但是Fifo
(读取时)上的内部锁定和collection
(写入时)上的内部锁定最终会降低性能。
我的意思是,如果我有巨大的消费者线程,也会有巨大的内部锁定与先进先出/集合,再加上许多上下文切换。
我怎样才能以正确的方式解决这类问题?指导方针是什么?