Boost Lockfree如何使用用户定义类型?

4

我尝试使用boost无锁库,但是当我将模板参数设置为用户定义类型时,出现错误invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’
请问有什么方法可以解决这个问题吗?

typedef struct TMsgBuffer
   {
      char m_puBuffer[512];
      size_t m_iBufferLen;
   } tMsgBuffer;

boost::lockfree::fifo<tMsgBuffer> fifo;

1
Lockfree不是标准boost的一部分。你从哪里得到它的?编译器为该错误提供了哪个文件/行号? - deft_code
1个回答

0

STATIC_ASSERTION_FAILURE 源于 BOOST_STATIC_ASSERT。我怀疑 Boost.Lockfree 对 FIFO 元素有一定的大小限制。可以尝试使用更小的 UDT 再次尝试。

Lockfree 可能只适用于标准类型,所以不会接受 UDT。如果是这种情况,您需要存储指针而不是实际结构。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接