Size: a a a

2020 December 23

YK

Yegor K in Modern::Perl
basiliscos
fail- (else), а так же always-семантики невыразимы через cv.
cv реализуют основу на которой прочую логику можно выразить perl-кодом по необходимости
источник

YK

Yegor K in Modern::Perl
Anton Petrusevich
cv отлично работает с коро. без коро он действительно не очень полезен
Coro тут ортогонален,
в доке к AnyEvent вполне хорошо описано:
Since condition variables are the most complex part of the AnyEvent API, here are some different mental models of what they are - pick the ones you can connect to:
   - Condition variables are like callbacks - you can call them (and pass them instead of callbacks). Unlike callbacks however, you can also wait for them to be called.
   - Condition variables are signals - one side can emit or send them, the other side can wait for them, or install a handler that is called when the signal fires.
   - Condition variables are like "Merge Points" - points in your program where you merge multiple independent results/control flows into one.
   - Condition variables represent a transaction - functions that start some kind of transaction can return them, leaving the caller the choice between waiting in a blocking fashion, or setting a callback.
   - Condition variables represent future values, or promises to deliver some result, long before the result is available.
источник

AP

Anton Petrusevich in Modern::Perl
Yegor K
Coro тут ортогонален,
в доке к AnyEvent вполне хорошо описано:
Since condition variables are the most complex part of the AnyEvent API, here are some different mental models of what they are - pick the ones you can connect to:
   - Condition variables are like callbacks - you can call them (and pass them instead of callbacks). Unlike callbacks however, you can also wait for them to be called.
   - Condition variables are signals - one side can emit or send them, the other side can wait for them, or install a handler that is called when the signal fires.
   - Condition variables are like "Merge Points" - points in your program where you merge multiple independent results/control flows into one.
   - Condition variables represent a transaction - functions that start some kind of transaction can return them, leaving the caller the choice between waiting in a blocking fashion, or setting a callback.
   - Condition variables represent future values, or promises to deliver some result, long before the result is available.
ты код коро читал? он меняет cv
источник

YK

Yegor K in Modern::Perl
пусть так, но это не значит что cv без Coro теряет в функциональности
источник

AP

Anton Petrusevich in Modern::Perl
не теряет, но заметно приобретает
источник

AP

Anton Petrusevich in Modern::Perl
cv->recv становятся точками решедулинга
источник

AP

Anton Petrusevich in Modern::Perl
и это меняет очень многое
источник

VG

Vadim Goncharov in Modern::Perl
basiliscos
fail- (else), а так же always-семантики невыразимы через cv.
а что это за семантики?
источник

a

allter in Modern::Perl
Vadim Goncharov
а что это за семантики?
Речь про catch/finally, я так понимаю
источник

YK

Yegor K in Modern::Perl
Anton Petrusevich
не теряет, но заметно приобретает
это скорее про специфику Coro, которая на любителя
источник
2020 December 24

AP

Anton Petrusevich in Modern::Perl
Yegor K
это скорее про специфику Coro, которая на любителя
специфика там очень ок. просто есть некоторые накладные расходы.
источник

AK

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

VG

Vadim Goncharov in Modern::Perl
а почему должен?
источник

VG

Vadim Goncharov in Modern::Perl
и в чем логичность их концепции?
источник

AK

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

AK

Andrey Konovalov in Modern::Perl
Это отличный примитив. CV - какое-то странное переизобретение хорошей идеи
источник

AK

Andrey Konovalov in Modern::Perl
Можно было бы делать множество send'ов и получать их таким же количеством recv, не меняя CondVar. Но предлагается возможность делать множество recv, получая одно и то же. И постоянно менять CondVar. Вот нафига??
источник

VG

Vadim Goncharov in Modern::Perl
Andrey Konovalov
Если ты что-то поместил в канал, ты можешь это считать. Если будешь читать канал, в котором пусто - заблокируешься до тех пор, пока кто-нибудь не запишет туда. Если ты пишешь в канал, из которого никто не читает, то тоже заблокируешься по исчерпанию буфера канала.
для этого много лет есть socketpair
источник

AK

Andrey Konovalov in Modern::Perl
Vadim Goncharov
для этого много лет есть socketpair
socketpair работает на уровне ядра же. Он годится для передачи данных между процессами, но не внутри одного процесса даже без потоков.
источник

VG

Vadim Goncharov in Modern::Perl
Andrey Konovalov
socketpair работает на уровне ядра же. Он годится для передачи данных между процессами, но не внутри одного процесса даже без потоков.
почему бы и нет, собсно?
источник