LINUX.ORG.RU

Мгновенный возврат в main из вложенных функций. Вопрос по select()

 , ,


0

2

Добрый день. Интересует решение на C/C++ (от платформы, надеюсь, это не зависит)

Допустим, у нас есть main() из которого вызывается функция А, из неё В, из неё С и т.д. Вопрос: как, не проходя в обратном порядке (из последней вернуться в С, из неё в В, из неё в А и только потом вернуться в main()), сразу вернуться в main()?


Еще один вопрос, связанный с сокетами:

Вот, к примеру, функция select() возвращает множество сокетов, в которых есть данные для чтения, множество сокетов с ошибками и множество сокетов, ожидающих запись. С первыми двумя всё понятно, сначала данных и ошибок не было, тут они появились и select() нам их возвращает. А вот с третьим совсем непонятно. Как может сокет ожидать записи, если пишем мы и мы решаем, когда хотим писать, а когда нет.

Можно объяснить, что здесь подразумевается под множеством сокетов, ожидающих записи, и как оно работает?



Последнее исправление: Architector (всего исправлений: 1)

Ответ на: комментарий от Siborgium

Чтобы не плодить оффтопик, если решишь ответить, отвечай в своем канале в телеге.

У Царя есть Telegram? Какой? Ради этого я даже готов там зарегистрироваться.

anonymous
()

Посмотри libdill от Сустрика.

XyAH
()

Допустим, у нас есть main() из которого вызывается функция А, из неё В, из неё С и т.д. Вопрос: как, не проходя в обратном порядке (из последней вернуться в С, из неё в В, из неё в А и только потом вернуться в main()), сразу вернуться в main()?

практически все языки/компиляторы умеют в «tailcall optimization», просто используйте этот факт.

MKuznetsov ★★★★★
()

В общем, спасибо всем. Для себя выделил три пути решения - исключения, континуации и tail call optimization.

Самое простое, конечно, исключения, но и остальное вполне интересно.

Architector
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.