Size: a a a

2021 February 25

O

Ofee in pro.cxx
Alex
асинхронно и дождаться - вообще странно звучат вместе)
В контексте диалога "асинхронность" — именно про возможность дождаться ответа, не блокируя другие полезные операции

Потому что реальная работа и вовсе идёт за пределами нашего устройства — никаких потоков при этом
источник

DK

Dmitry Khominich in pro.cxx
Alex
Это интересно. Типа, проснуться, чекнуть статус, если ещё не готово - опять заснуть?
Что такие задачи могут делать между снами - я не знаю. Зависит от бизнес логики уже. Но технически такой эвент луп возможен, он будет жить в одном потоке.
источник

A

Alex in pro.cxx
Я могу увидеть смысл в таком коде, например, мы ждём много событий, но обрабатываются события намного быстрее, чем период их возникновения. Мы хотим спать в ожидании 100 источников событий, и заводить для этого 100 потоков, или даже один второй поток, может быть нецелесообразно.
источник

A

Alex in pro.cxx
если, конечно, на корутинах вообще реализуется именно такой пример, я не уверен
источник

SK

Stas Koynov in pro.cxx
Alex
Я могу увидеть смысл в таком коде, например, мы ждём много событий, но обрабатываются события намного быстрее, чем период их возникновения. Мы хотим спать в ожидании 100 источников событий, и заводить для этого 100 потоков, или даже один второй поток, может быть нецелесообразно.
epoooool?
источник

S

Stolyarchuk in pro.cxx
Stas Koynov
epoooool?
epoll?
источник

SK

Stas Koynov in pro.cxx
угу
источник

m

magras in pro.cxx
Alex
Связь, с моей т. з., такая, что location-то попроще реализовать, казалось бы. Это пример, что рано ещё на С++20 переходить, в одних компиляторах одно не работает, в других другое, пока все поддержат - уже С++23 будем обсуждать.
Так реализация корутин это интересная исследовательская задача, которую было необходимо хотя бы на уровне прототипа реализовать до принятия фичи в стандарт, а source_location - это рутиная задача с низким приоритетом. Ничего странного в том, что корутины реализованы, а source_location - нет.
источник

m

magras in pro.cxx
Stas Koynov
epoooool?
Реактор, который работает с io будет написан поверх epoll / io_uring. Асинхронный рантайм (которого еще нет) это в значительной степени именно удобная обертка поверх epoll или аналога.
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
самый яркий пример спагетти - throw, по сравнению с ним корутины уже такая мелочь, что можно не волноваться, конечно
throw по критерию "спагетти" ничем не хуже return
источник

A

Alex in pro.cxx
return прыгает гарантированно на один уровень наверх, как и вызов функции, в отличие от
источник
2021 February 26

IZ

Ilia Zviagin in pro.cxx
Личка - это личное дело каждого, ты индивидуально можешь кого-то забанить...
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
Но это же многопоточный сценарий! Просто второй поток вы не порождали явно, но очевидно, что он есть.
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
return прыгает гарантированно на один уровень наверх, как и вызов функции, в отличие от
Это неважно, внутри функции код с return и throw ведут себя одинаково - прыгают хз куда
источник

A

Alex in pro.cxx
Да если бы. В случае с return я могу полнотекстовым поиском найти все места вызова этой функции, и понимать, что вернуться она может только в это место. В случае с throw я могу или пойти застрелиться, или перейти в компанию, которая не юзает исключения в их С++ коде.
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
Да если бы. В случае с return я могу полнотекстовым поиском найти все места вызова этой функции, и понимать, что вернуться она может только в это место. В случае с throw я могу или пойти застрелиться, или перейти в компанию, которая не юзает исключения в их С++ коде.
>  В случае с return я могу полнотекстовым поиском найти все места вызова этой функции

Ну поищешь ты вызовы функции foo.
И найдешь что то типа:
int bar() {
 if (!foo()) {
   return ERR_SOME_ERROR;
 }
}

Какие дальнейшие действия?
источник

A

Alex in pro.cxx
Понятно, именно в случае с внешним устройством второй поток выполняется процессором устройства или чипсета, а не ЦП компьютера. Хорошее объяснение, спасибо за ссылку.
источник

D

Dmitriy in pro.cxx
Побитый Кирпич
>  В случае с return я могу полнотекстовым поиском найти все места вызова этой функции

Ну поищешь ты вызовы функции foo.
И найдешь что то типа:
int bar() {
 if (!foo()) {
   return ERR_SOME_ERROR;
 }
}

Какие дальнейшие действия?
Застрелиться или перейти в компанию, которая юзает исключения в их С++ коде)))
источник

CD

Constantine Drozdov in pro.cxx
Alex
Да если бы. В случае с return я могу полнотекстовым поиском найти все места вызова этой функции, и понимать, что вернуться она может только в это место. В случае с throw я могу или пойти застрелиться, или перейти в компанию, которая не юзает исключения в их С++ коде.
И что, помогло?
источник

АР

Андрей Руссков... in pro.cxx
Побитый Кирпич
Это неважно, внутри функции код с return и throw ведут себя одинаково - прыгают хз куда
в разные landing pad'ы всё-таки
источник