увеличить без блокировки использовать пользовательский тип определения - PullRequest
4 голосов
/ 03 ноября 2011

Я пытался использовать библиотеку boost lockfree. Однако возникает ошибка 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 Ответ

0 голосов
/ 05 ноября 2011

STATIC_ASSERTION_FAILURE возникает из BOOST_STATIC_ASSERT. Я подозреваю, что Boost.Lockfree имеет некоторые ограничения на размер элементов fifo. Попробуйте еще раз с меньшей UDT.

Может также случиться, что Lockfree работает только со стандартными типами, поэтому UDT не будут приняты. Если это так, вам нужно хранить указатель вместо фактической структуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...