Я пытаюсь поставить std::string
s в boost::lockfree::queue
s, так что мои потоки могут обновлять друг друга новыми данными.как поставить std :: string в boost :: lockfree :: queue (или альтернатива)?
Когда я пытаюсь использовать boost::lockfree::queue<std::string> updated_data;
, g++
говорит:
In instantiation of 'class boost::lockfree::queue >':
error: static assertion failed: (boost::has_trivial_destructor::value)
error: static assertion failed: (boost::has_trivial_assign::value)
Я был shown generally what these errors mean, но у меня нет никакой надежды когда-либо исправить эту проблему сам, так как я почти новенькая C++.
Есть ли альтернативный способ передачи текстовых данных между потоками с помощью lockfree
? Если нет, пожалуйста, покажите мне, как положить std::string
в boost::lockfree::queue
.
Это не совсем так: вы можете поместить необработанные указатели в очередь и освободить их, когда вы поместите указатель. например 'queue-> consume_all ([] (std :: string * str) {do_something (str); delete str;});' – Zero