Size: a a a

2019 December 17

TZ

Troll Zhuravlev in Modern::Perl
ага.. доки хорошо вставляют )))
источник

DF

Denis F in Modern::Perl
Andrei Protasovitski
У меня приложение на Dancer2 не пишет в логи, если я запускаю через Starman. У меня вообще никаких идей, почему так.
А через что и куда оно их пишет? А то может у тебя логлевел критикал стоит и вот это всё
источник

AP

Andrei Protasovitski in Modern::Perl
У меня debug стоит. Без Starman'а пишет, как положено.
источник

OP

Oleg Pronin in Modern::Perl
Andrey Konovalov
Жаль, что нет логики как с сокетами: блокироваться и ждать, пока не появится что-нибудь в буфере.
С сокетами в конечном итоге асинхронные циклы тоже делают по сути просто select на каждом проходе, когда очередной асинк-обработчик передаёт управление обратно в цикл, т.е. пусть там и нет sleep, но логика реальной долбёжки polling'ом вполне на лицо
В асинхронном лупе нет никакой долбежки, иначе он бы жрал 100% проца всегда.
Луп засыпает в epoll/kqueue/etc пока не появятся данные в одном из сокетов. (Или пока таймер не наступ время вызвать)
источник

AK

Andrey Konovalov in Modern::Perl
Oleg Pronin
В асинхронном лупе нет никакой долбежки, иначе он бы жрал 100% проца всегда.
Луп засыпает в epoll/kqueue/etc пока не появятся данные в одном из сокетов. (Или пока таймер не наступ время вызвать)
Т.е. процесс на очередной итерации цикла событий блокирует ядро ОС, поскольку он ждёт ввода-вывода в одном из файловых дескрипторов? Интересно, а таймер как реализован?
источник

AK

Andrey Konovalov in Modern::Perl
Будит-то ведь процесс и ввод-вывод, и таймер
источник

OP

Oleg Pronin in Modern::Perl
Andrey Konovalov
Т.е. процесс на очередной итерации цикла событий блокирует ядро ОС, поскольку он ждёт ввода-вывода в одном из файловых дескрипторов? Интересно, а таймер как реализован?
Таймер реализован так: луп знает ближайшее время когда след таймер сработает. И это время является макс таймаутом для epoll
источник

OP

Oleg Pronin in Modern::Perl
Не в одном из, а сразу во всех
источник

OP

Oleg Pronin in Modern::Perl
Для этого epoll/kqueue придуманы)
источник

AK

Andrey Konovalov in Modern::Perl
Oleg Pronin
Не в одном из, а сразу во всех
В смысле во всех? Я так понимаю, что в любом из: один асинк-обработчик подписан на ФД №1, другой - на ФД №2, и явно нужно не ждать, когда вообще для всех ФД что-нибудь в буфере объявится
источник

SL

Sergey Lobanov in Modern::Perl
он же написал - максимальный таймаут, если раньше данные в какой-нибудь сокет придут, проснётся раньше, если нет, по таймауту
источник

AK

Andrey Konovalov in Modern::Perl
Oleg Pronin
Не в одном из, а сразу во всех
Я про это
источник

SL

Sergey Lobanov in Modern::Perl
так петля от входов отталкивается, а не от обработчиков
источник

SL

Sergey Lobanov in Modern::Perl
она же ждёт события на входах и уже потом смотрит, какой обработчик для него запустить
источник

SL

Sergey Lobanov in Modern::Perl
насчёт, не в одном, а на всех - это я не понял, про что
источник

AK

Andrey Konovalov in Modern::Perl
Она ждёт любого события из множества, я об этом. Ей не нужно ждать, когда произойдут вообще все события. Так что я тоже не понял, к чему бы это :)
источник

SL

Sergey Lobanov in Modern::Perl
если б на всех ждала, кто бы работу делал :}
источник

AK

Andrey Konovalov in Modern::Perl
Есть какое разумное объяснение того, почему обработчик не может подписаться сразу на несколько событий?
источник

AK

Andrey Konovalov in Modern::Perl
Например, таймаут так бы элементарно реализовать было без извращений
источник

SL

Sergey Lobanov in Modern::Perl
с чего бы он не мог?
источник