Size: a a a

2020 December 24

AK

Andrey Konovalov in Modern::Perl
Vadim Goncharov
почему бы и нет, собсно?
Для асинка? Тяжеловато слегка.
источник

VG

Vadim Goncharov in Modern::Perl
уж по сравнению с самим перлом - ничего тяжелого
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
Andrey Konovalov
У cv один недостаток: он вообще не следует логичной концепции Channel'ов golang. А почему - никто не объясняет
а разве они там логичные? все же ругаются
источник

AP

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

AK

Andrey Konovalov in Modern::Perl
Vadim Goncharov
уж по сравнению с самим перлом - ничего тяжелого
Ну да, только блокировка на сокете без флага "не блокирующийся" - просто приведёт к останову программы. А реализация асинка с epoll'ами в цикле "а нельзя ли уже?" будет точно дороже тупой переменной в памяти
источник

VG

Vadim Goncharov in Modern::Perl
Andrey Konovalov
Ну да, только блокировка на сокете без флага "не блокирующийся" - просто приведёт к останову программы. А реализация асинка с epoll'ами в цикле "а нельзя ли уже?" будет точно дороже тупой переменной в памяти
AnyEvent уже и так крутит для тебя этот цикл
источник

AP

Anton Petrusevich in Modern::Perl
Андрей сравнивает, обычно, с фиберами из руби
источник

AK

Andrey Konovalov in Modern::Perl
Vadim Goncharov
AnyEvent уже и так крутит для тебя этот цикл
Ну крутит, но для управления этим циклом зачем что-то внешне использовать?
источник

AK

Andrey Konovalov in Modern::Perl
Anton Petrusevich
Андрей сравнивает, обычно, с фиберами из руби
В Руби их вообще не видел, в Crystal, Golang и Julia они сделаны одинаково.
источник

AP

Anton Petrusevich in Modern::Perl
я кристал от руби не сильно отличаю
источник

VG

Vadim Goncharov in Modern::Perl
Andrey Konovalov
Ну крутит, но для управления этим циклом зачем что-то внешне использовать?
а какая разница?
источник

VG

Vadim Goncharov in Modern::Perl
Andrey Konovalov
В Руби их вообще не видел, в Crystal, Golang и Julia они сделаны одинаково.
в Go нет фиберов, там горутины
источник

SZ

Sergey Zhmylove in Modern::Perl
Andrey Konovalov
Это отличный примитив. CV - какое-то странное переизобретение хорошей идеи
Простите, блдь, но cv существовало ещё когда не было никаких новомодных каналов. Это один из классических примитивов синхронизации и половина ядра сопляриса написана на кондварах. В ае просто добавили к этому пачку данных (с известными ограничениями на передачу). И да, никто не мешает кинуть пару пайпов если уж очень надо так передавать данные.
А вообще есть кафка
источник

VG

Vadim Goncharov in Modern::Perl
грефневая
источник

M

Max in Modern::Perl
Andrey Konovalov
Это отличный примитив. CV - какое-то странное переизобретение хорошей идеи
«переизобретение» cv началось в 70-х, неким Хоаром на основе работ некоего Дейкстры.
в целом идея описана тут
https://en.wikipedia.org/wiki/Monitor_(synchronization)
источник

AK

Andrey Konovalov in Modern::Perl
Anton Petrusevich
я кристал от руби не сильно отличаю
Crystal - по сути инкарнация Golang, но с более другим синтаксисом. Ruby - интерпретируемый язык со всеми элементами саморефлексии в рантайме, в том числе способностью самого себя eval'ить
источник

AK

Andrey Konovalov in Modern::Perl
И ещё в Crystal есть бесценная штука - развитая макрогенерация: https://dev.to/matthewmcgarvey/macro-tips-typedeclaration-5hfo
источник

a

allter in Modern::Perl
Andrey Konovalov
Если ты что-то поместил в канал, ты можешь это считать. Если будешь читать канал, в котором пусто - заблокируешься до тех пор, пока кто-нибудь не запишет туда. Если ты пишешь в канал, из которого никто не читает, то тоже заблокируешься по исчерпанию буфера канала.
В целом, в Perl каналы не нужны, т.к. нет нормальной многопоточности. Семантику "блокировки исполнителя" поддерживает Coro. Либо можешь взять промисы, создание которых примерно соответствует "блокировке" и при определённом навыке это читается намного легче чем колбэки.
источник

AK

Andrey Konovalov in Modern::Perl
Вот мой аналог Mojo::IOLoop->delay для AnyEvent:
https://github.com/DRVTiny/AnyEvent--Run/blob/main/lib/AnyEvent/Run.pm
источник

AK

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