Sto provando a inserire std::string
in boost::lockfree::queue
s in modo che i miei thread possano aggiornarsi a vicenda con nuovi dati.come mettere std :: string in boost :: lockfree :: queue (o alternativo)?
Quando provo ad usare boost::lockfree::queue<std::string> updated_data;
, g++
dice:
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)
Sono stato shown generally what these errors mean, ma non ho alcuna speranza di fissare questo me stesso, come io sono quasi nuovo di zecca a C++.
Esiste un modo alternativo per passare i dati di testo tra i thread con lockfree
? In caso contrario, mostrami come inserire std::string
in un boost::lockfree::queue
.
Questo non è proprio vero: puoi mettere i puntatori grezzi in coda e liberarli quando fai il puntatore. pe 'queue-> consume_all ([] (std :: string * str) {do_something (str); delete str;});' – Zero