Size: a a a

2020 April 08

AP

Anton Petrusevich in Modern::Perl
на самом деле, допустим, эниевент сервер принимает сообщения и должен давать ответы по сценарию. и как часть сценария он должен, допустим, внешний хттп сервер опросить. и вот на чистом эниевенте как он в интро описан это сделать затруднительно — у тебя из колбека надо запустить новый сокет, там дождаться результата исполнения и отправить результат в исходный сокет. это не сделать нормально без изменения архитектуры
источник

VG

Vadim Goncharov in Modern::Perl
basiliscos
Я что-то вообще не видел ивент-лупов, в к-х можно было бы "исключить" что-то временно из опроса.
Есть ивент-лупы, где отдельный инстанс Loop можно создать и крутить ТОЛЬКО ЕГО. Но тогда "замораживается" всё остальное. Это не то. В AE всё всегда крутится, и "исключать", афаик нельзя (а нужно "не включать", т.е. не делать push_read).

ВГ у тебя задача c гонками - пока ещё какой-то сторонний сервис опросишь, тебе от клиента всё равно могут данные уже прилететь. Не обрабатывать их можно только делая СИНХРОННЫЙ запрос (или не на AE-лупе). Выглядет как костыль для сервера
не, ну это можно сделать на AE (исключить), если залезаешь в потроха или имплементить кусок AnyEvent::Handle руками

и да, это костыль для сервера :)
источник

AP

Anton Petrusevich in Modern::Perl
в пое можно
источник

VG

Vadim Goncharov in Modern::Perl
а как это выглядело бы с Coro? в нём можно в двух разных тредах иметь свои независимые AnyEvent?
источник

AP

Anton Petrusevich in Modern::Perl
нет, у него один эниевент на всё
источник

AP

Anton Petrusevich in Modern::Perl
но у него центральный элемент — стейт треда
источник

b

basiliscos in Modern::Perl
Anton Petrusevich
на самом деле, допустим, эниевент сервер принимает сообщения и должен давать ответы по сценарию. и как часть сценария он должен, допустим, внешний хттп сервер опросить. и вот на чистом эниевенте как он в интро описан это сделать затруднительно — у тебя из колбека надо запустить новый сокет, там дождаться результата исполнения и отправить результат в исходный сокет. это не сделать нормально без изменения архитектуры
да, поэтому и не надо всё на коллбэках строить )
источник

VG

Vadim Goncharov in Modern::Perl
"независимые" я имел в виду, вот этот сокет - на кондваре одного треда, а вон тот - другого
источник

AP

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

AP

Anton Petrusevich in Modern::Perl
wait_func  => sub {push @pool_wait_queue, $Coro::current; Coro::schedule;},
источник

VG

Vadim Goncharov in Modern::Perl
Anton Petrusevich
нет, у него один эниевент на всё
что имеется в виду?
источник

AP

Anton Petrusevich in Modern::Perl
 if (my $wc = shift @pool_wait_queue) {
                       $wc->ready;
               }
источник

AP

Anton Petrusevich in Modern::Perl
Vadim Goncharov
что имеется в виду?
в доке на коро написано, что у него внутри эниэвент
источник

VG

Vadim Goncharov in Modern::Perl
ох...
источник

VG

Vadim Goncharov in Modern::Perl
какой же пидор этот Дуров
источник

VG

Vadim Goncharov in Modern::Perl
в прошлый такой раз в августе unknown type нашли в одной конкретной версии схемы, подождали и перезапустились на неё - а теперь даже не понять, из какой версии, в разных встречается
источник

AP

Anton Petrusevich in Modern::Perl
эниевент очнеь шустрый, быстрый и лёгкий, пока твоё приложение укладывается в "запрос-ответ". как только надо "запрос->запрос->ответ->ответ", то становится заметно "веселее". начинается огород.
источник

AP

Anton Petrusevich in Modern::Perl
в моджо подобное пытались через delay() (долбанутое название) решить, когда сценарий описывался списком ссылок на субрутины. щас там вроде промисы популярны
источник

AP

Anton Petrusevich in Modern::Perl
стейт-центричный подход в POE, но это кардинально другой мир :)
источник

VG

Vadim Goncharov in Modern::Perl
а вроде POE дружилось с AnyEvent?
источник