void *msg - это указатель на char буфер куда скопировано полученное сообщение. Следующее сообщение этот буфер перезапишет. Есть очередь thread-safe queue<std::function<void(void)>> куда я хочу сложить вызовы этих колбэков. Делаю это так: https://godbolt.org/z/4cjdoGjEE
Очевидно, что так как вызов колбэка из очереди происходит асинхронно, то если подряд пришли несколько сообщений, то есть вероятность, что сообщение будет перезаписано до того, как будет обработано. Есть ли какой-то способ скопировать char-массив в lambda capture, чтобы скопированный объект хранился в лямбде?
string
в этом случае нужно будет изменить сигнатуры всех коллбэков, а этого варианта хотелось бы избежать
спасибо. Придумал, как это накостялять, используя строку.
Обсуждают сегодня