ASIO.
Допустим, у нас есть io_context ctx из которого мы получили strand<> путем вызова auto st = make_strand(ctx)
Нам надо, чтобы коллбеки выполнялись друг за другом, а не параллельно на разных тредах ctx'а.
Есть ли разница между:
socket s(ctx);
timer t(ctx);
s.async_OPS(bind_executor(st, LAMBDA1))
t.async_wait(bind_executor(st, LAMBDA2))
и
socket s(st);
timer t(st);
s.async_OPS(LAMBDA1)
t.async_wait(LAMBDA2)
?
Если я все правильно понял, то работать они должны одинаково по наблюдаемому поведению синхронизации запусков LAMBDA* в одной цепочке без конкуренции, но нет ли разницы непосредственно с точки зрения обработки сетевых событий и событий таймера на стороне ASIO?
Какой подход лучше использовать?
Я не очень разбираюсь, но ждать я думаю оно будет либо то, либо другое, в зависимости от порядка.
Обсуждают сегодня