Перемещение cppzmq message_t в фоновый потокC++

Программы на C++. Форум разработчиков
Anonymous
Перемещение cppzmq message_t в фоновый поток

Сообщение Anonymous »

У меня есть поток-получатель. Я хочу переместить сообщения в очередь для потоков фоновых процессоров. Проще говоря:

Код: Выделить всё

std::queue qu;
zmq::message_t msg;
zmq::recv_result_t res = sock.recv(msg, zmq::recv_flags::none);
qu.push(std::move(message));
Я получаю сообщение об ошибке:

Код: Выделить всё

include/zmq.hpp:745:5: note: declared here
745 |     message_t(const message_t &) ZMQ_DELETED_FUNCTION;
Даже без std::move он все равно не работает.
Я понимаю, что zmq::message_t нельзя так передвигать. Как правильно это сделать (эффективно, без ненужного копирования)?
Я ожидаю, что message_t будет хранить данные сообщения, выделенные в куче, и это будет быть освобожден в деструкторе message_t. В таком случае я не понимаю, в чем здесь проблема.

Подробнее здесь: https://stackoverflow.com/questions/787 ... und-thread

Вернуться в «C++»