在why is boost lockfree freelist size is limited to a maximum of 65535 objects?
中继续提问如果是64位机器,如何增加队列的大小。
typedef boost::lockfree::queue<int, boost::lockfree::fixed_size<true>> MyQueue;
MyQueue queue(1024*100); << how to increase the size to more than 65534?
Boost实现为队列项添加额外的标记位以避免ABA问题。目前它使用32位值(16位用于指针,16位用于标记)。
如何将其更改为使用64位值(指针为32位,标签为32位)?
是否足以根据unin32_t将tagged_index :: tag_t和index_t更改为ba?
答案 0 :(得分:1)
正如所指出的,答案就在这里:https://stackoverflow.com/a/14957828/1065190(由实施者编写,Tim Blechmann):
对于64位平台,可以调整boost.lockfree代码 使用32位而不是16位索引。但它需要一些 正确实现事情的非平凡变化。