Size: a a a

2020 July 31

ПК

Побитый Кирпич... in supapro.cxx
Петр
Учитывая, что он не работает, это справедливое замечаание
Тогда что ещё тебя интересует?
источник

П

Петр in supapro.cxx
Побитый Кирпич
Тогда что ещё тебя интересует?
Я не понимаю, почему код выходит за пределы массива
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
У тебя один поток, у тебя нет вариантов кроме выполнены последовательно, я имею ввиду не конкретный порядок вызова, а отсутствие конкурентности
В синхронном коде, если что такого быть не может, если мы не рассматриваем гавнокод с delete this
источник

ПК

Побитый Кирпич... in supapro.cxx
Петр
Я не понимаю, почему код выходит за пределы массива
Запусти под отладчиком, скорее всего поймёшь
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
Представь что baz это метод this, как и foo, и bar. Что будет, если после co_await, но до baz this удалится?
Как в твоём коде он может удалиться ? Кто дернет деструктор ?
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
Как в твоём коде он может удалиться ? Кто дернет деструктор ?
Какой то код, который выполнится после co_await
источник

ПК

Побитый Кирпич... in supapro.cxx
То есть где то есть ещё такой код с co_await-ами
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
Какой то код, который выполнится после co_await
У тебя явно есть объект который выше всех этих вызовов
источник

DP

Denis Paukaev in supapro.cxx
Если он их не переживает то это говнокод
источник

DP

Denis Paukaev in supapro.cxx
Это примерно как явно вызвать деструктор руками
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
Если он их не переживает то это говнокод
То есть ты признаёшь, что тут есть принципиальное отличие от синхронного кода, хотя по структуре своей код практически синхронный?
источник

DP

Denis Paukaev in supapro.cxx
Побитый Кирпич
То есть ты признаёшь, что тут есть принципиальное отличие от синхронного кода, хотя по структуре своей код практически синхронный?
Не признаю, я тебе выше сказал что объект в твоём примере не может умереть при отсутствии наркоманов за клавиатурой
источник

DP

Denis Paukaev in supapro.cxx
Как и в синхронном коде
источник

DP

Denis Paukaev in supapro.cxx
Если у нас один поток то твой co_await это аналог sleep(2) условно
источник

DP

Denis Paukaev in supapro.cxx
Просто блокирующий вызов который никак не влияет на лайфтайм this
источник

DP

Denis Paukaev in supapro.cxx
И да, ОС там сходит по сети в это время, например, а ты подождёшь пока это случится )
источник

DF

Dollar Føølish in supapro.cxx
Тут кирпич прав
источник

ПК

Побитый Кирпич... in supapro.cxx
Denis Paukaev
Не признаю, я тебе выше сказал что объект в твоём примере не может умереть при отсутствии наркоманов за клавиатурой
Ок, другой вариант:
awaitable<void> do_some(int& param) {
   foo();
   co_await bar();
   cout << param;
}

ЕМНИП тут будет UB, если то, на ссылается param будет уничтожено раньше cout << param;.
Скажи мне, такое может произойти в синхронном коде?
источник

DF

Dollar Føølish in supapro.cxx
В стеклесс корутинах авейт это возврат вплоть до шедулера
источник

DF

Dollar Føølish in supapro.cxx
В смысле ретёрн
источник