LINUX.ORG.RU

История изменений

Исправление voipdev, (текущая версия) :

теперь кажется понял

все зависит от того КАК вы реализуете функцию async_receive и ее возвращаемый авейтор

потому как даже в приведенном вами псевдокоде auto receive_op = async_receive(queue);

она может не делать ничего, кроме возвращение авейтора

и некий мифический if(random) return никак не повлияет на очередь

потому что все состоятся только в use(co_await receive_op)

или реализовать в функции и забор сообщения, а потом уже возвращение авейтора

но тогда нужно делать RAII на receive_op что бы при мифическом if(random) return

сообщение закинуть обратно в очередь (т.е. в деструкторе receive_op)

а иначе да, оно будет утеряно

но возвращать авейтор в переменной рассчитывая на то что пользователь сам далее сделает co_await на переменной по моему мнения очень НЕ приятно в использовании

зы нюансы с забором сообщения по итогу, что бы в деструкторе оно опять не вернулось по кругу, я опущу, это само собой разумеется

Исходная версия voipdev, :

теперь кажется понял

все зависит от того КАК вы реализуете функцию async_receive и ее возвращаемый авейтор

потому как даже в приведенном вами псевдокоде auto receive_op = async_receive(queue);

она может не делать ничего, кроме возвращение авейтора

и некий мифический if(random) return никак не повлияет на очередь

потому что все состоятся только в use(co_await receive_op)

или реализовать в функции и забор сообщения, а потом уже возвращение авейтора

но тогда нужно делать RAII на receive_op что бы при мифическом if(random) return

сообщение закинуть обратно в очередь (т.е. в деструкторе receive_op)

а иначе да, оно будет утеряно

но возвращать авейтор в переменной рассчитывая на то что пользователь сам далее сделает co_await на переменной по моему мнения очень НЕ приятно в использовании