![]() |
1
2
我认为在这种情况下,由于调用
我将使用一个向量,当它太小而不能容纳队列时,您可以调整它的大小。我永远不会把它改小。 我会安排前面和后面的值,这样向量就是一个环缓冲区。这需要在调整大小时移动元素。但这应该是一个相当罕见的事件,可以通过在构建时给出一个建议的向量大小在某种程度上加以缓解。 或者,可以保留链接列表结构,但不销毁节点。只需不断地将其添加到一个空闲节点队列中。不幸的是,空闲节点的队列需要锁定才能正确地管理,我不确定您是否真的处于一个比一直调用delete和new更好的位置。 您还可以通过向量得到更好的引用位置。但我不确定这将如何与必须在CPU之间来回切换的缓存线进行交互。
有些人建议
|
![]() |
2
1
Herb Sutter提出了一个无锁队列的实现,它肯定比您的更好:) 主要思想是使用缓冲环,在队列运行期间完全放弃内存的动态分配。这意味着队列可以是满的(因此您可能需要等待放入元素),这在您的情况下可能是不可接受的。
正如Omnifarious所指出的,最好不要使用链接列表(用于缓存位置),除非您为池分配。我会尝试使用
|
![]() |
lio · Java实例化Queueadt的实现 6 年前 |
![]() |
Invictus97k · c编程、队列和模块问题 6 年前 |
![]() |
Gameatro · 为什么malloc在函数内部调用时返回空指针? 6 年前 |
![]() |
Ahsan Tarique · 队列实现错误C++[重复] 7 年前 |
![]() |
aknosis · 为多个队列共享单个laravel数据库表 7 年前 |
![]() |
T.Sh · Elastix自定义配置文件 7 年前 |