|
|
1
2
我认为在这种情况下,由于调用
我将使用一个向量,当它太小而不能容纳队列时,您可以调整它的大小。我永远不会把它改小。 我会安排前面和后面的值,这样向量就是一个环缓冲区。这需要在调整大小时移动元素。但这应该是一个相当罕见的事件,可以通过在构建时给出一个建议的向量大小在某种程度上加以缓解。 或者,可以保留链接列表结构,但不销毁节点。只需不断地将其添加到一个空闲节点队列中。不幸的是,空闲节点的队列需要锁定才能正确地管理,我不确定您是否真的处于一个比一直调用delete和new更好的位置。 您还可以通过向量得到更好的引用位置。但我不确定这将如何与必须在CPU之间来回切换的缓存线进行交互。
有些人建议
|
|
2
1
Herb Sutter提出了一个无锁队列的实现,它肯定比您的更好:) 主要思想是使用缓冲环,在队列运行期间完全放弃内存的动态分配。这意味着队列可以是满的(因此您可能需要等待放入元素),这在您的情况下可能是不可接受的。
正如Omnifarious所指出的,最好不要使用链接列表(用于缓存位置),除非您为池分配。我会尝试使用
|
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
H3007 · 并发运行python子进程似乎不是并发的 1 年前 |
|
|
The Oddler · TVar会阻止读取直到更改吗? 1 年前 |
|
|
Wang Tuma · 使用信号量的c++并发问题:按顺序打印 1 年前 |
|
|
Marcel Batista · 在不同线程中更新密钥时的字典线程安全 2 年前 |
|
|
rico · 当volatile关键字真的是必要的? 2 年前 |