如何将64位机器的boost lockfree大小增加到超过65535个对象?

时间:2013-08-20 08:08:52

标签: c++ boost c++11 lock-free

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?

1 个答案:

答案 0 :(得分:1)

正如所指出的,答案就在这里:https://stackoverflow.com/a/14957828/1065190(由实施者编写,Tim Blechmann):

  

对于64位平台,可以调整boost.lockfree代码   使用32位而不是16位索引。但它需要一些   正确实现事情的非平凡变化。