Size: a a a

2020 August 26

🦊

🦊fox.cpp in C++ Together 2.0
Roy Mustang
Вот тебе прилетел по сети пакет с данными, как его обрабатывать и десериализовывать?
открой пример asio и посмотри
источник

🦊

🦊fox.cpp in C++ Together 2.0
socket.async_read(коллбек);
источник

🦊

🦊fox.cpp in C++ Together 2.0
потом из io_offload треда будет вызван коллбек
источник

🦊

🦊fox.cpp in C++ Together 2.0
в идеале я либо снова в async I/O его отправлю оттуда, либо через кондвар тред логики пну
источник

RM

Roy Mustang in C++ Together 2.0
Не понял, а в чем проблема сделать как ты сказал, а async_read запихнуть в Update?
источник

🦊

🦊fox.cpp in C++ Together 2.0
Потому что ты начинаешь переизобретать реактор.
источник

🦊

🦊fox.cpp in C++ Together 2.0
Фундаментальная проблема в том, что ты не можешь интегировать asio в свой луп.
источник

🦊

🦊fox.cpp in C++ Together 2.0
Оно хочет само работать.
источник

RM

Roy Mustang in C++ Together 2.0
Я вообще планировал сделать так, в Update мы проверяем потокобезопасный queue, если он не пуст - тянем данные и обрабатываем
источник

🦊

🦊fox.cpp in C++ Together 2.0
Если ты будешь дрочить в run_single - это просто неэффективно, учитывая оверхед твоих Update
источник

RM

Roy Mustang in C++ Together 2.0
То есть, чтоб Asio клал данные в какой нибудь queue
источник

RM

Roy Mustang in C++ Together 2.0
а основной поток забирал эти данные при вызове Update метода
источник

🦊

🦊fox.cpp in C++ Together 2.0
Вот, ты изобрел реактор.
источник

🦊

🦊fox.cpp in C++ Together 2.0
Который уже у asio уже есть.
источник

RM

Roy Mustang in C++ Together 2.0
🦊fox.cpp
Который уже у asio уже есть.
Ну значит использую его в чем проблема
источник

RM

Roy Mustang in C++ Together 2.0
Я думал lock_free queue какой нибудь юзать
источник

🦊

🦊fox.cpp in C++ Together 2.0
Так не используешь же.
источник

RM

Roy Mustang in C++ Together 2.0
Потому что я еще не дошел до асио
источник

🦊

🦊fox.cpp in C++ Together 2.0
Ты свой начинаешь делать, который с async_* методами не будет работать.
источник

RM

Roy Mustang in C++ Together 2.0
Я толком его не изучал потому что еще не дошел
источник