Size: a a a

2020 November 24

VG

Vadim Goncharov in Modern::Perl
Vyacheslav Olkhovchenkov
ну висит но на kevent/epool -- и что?
на этих, очевидно, висеть будет сам луп
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
ой ты типа это увидишь как-то
источник

VK

Vyacheslav Koval in Modern::Perl
Михаил Иванов
Можно ли протестировать асинхронную функцию на наличие непреднамеренной блокировки?

Допустим, я пишу асинхронную функцию и внутри помимо неблокирующих операций по ошибке использую блокирующую операцию. В итоге в целом функция работает, но на самом деле есть затык.

Можно поймать наличие блокировки?
таймаут?
источник

VG

Vadim Goncharov in Modern::Perl
Vyacheslav Olkhovchenkov
ой ты типа это увидишь как-то
ну а кто будет их вызывать, кроме самого лупа? кому оно надо?
источник

DF

Denis F in Modern::Perl
Михаил Иванов
Это если время засекать. Но ведь система где-то внутри знает, что мы чего-то ждали, даже если наносекунду. Надо у неё как-то спросить.
ну, теоретически, можно замокать то, что у тебя на самом нижнем уровне и влепить туда sleep 1, сразу видно будет блокируется или нет :)
источник

МИ

Михаил Иванов... in Modern::Perl
Denis F
ну, теоретически, можно замокать то, что у тебя на самом нижнем уровне и влепить туда sleep 1, сразу видно будет блокируется или нет :)
А что на нижнем уровне? Я где-то допустим сделал print в файл. Что замокать? print? Так я его по глупости использовал и не в курсе, что он использован.
источник

МИ

Михаил Иванов... in Modern::Perl
Vyacheslav Koval
таймаут?
Таймаут на что? Функция допустим исполяется секунду, из этого блокировка 0.1 секунды. Таймаут нужно поставить на 0.9 секунды, но для этого откуда-то нужно знать, что блоуировкп есть и она 0.1 секунды.
источник

VK

Vyacheslav Koval in Modern::Perl
Михаил Иванов
Таймаут на что? Функция допустим исполяется секунду, из этого блокировка 0.1 секунды. Таймаут нужно поставить на 0.9 секунды, но для этого откуда-то нужно знать, что блоуировкп есть и она 0.1 секунды.
тут уже все зависит от того, предоставляет ли АПИ информацию о блокировке - будь то сетевая или на файловой системе
источник

МИ

Михаил Иванов... in Modern::Perl
Vyacheslav Koval
тут уже все зависит от того, предоставляет ли АПИ информацию о блокировке - будь то сетевая или на файловой системе
Ну так об том и вопрос.
источник

VK

Vyacheslav Koval in Modern::Perl
а что конкретно реализовываешь?
источник

МИ

Михаил Иванов... in Modern::Perl
Это не суть важно. Что угодно может быть. Ну, допустим, нужно скачать файл с интернета и положить на диск. Можно напутать с сетью, можно напутать с диском. Допустим даже подозреваем конкретно диск.
источник

МИ

Михаил Иванов... in Modern::Perl
Как спросить диск - эй, мы на тебе блокировались?
источник

МИ

Михаил Иванов... in Modern::Perl
Мы ведь так или иначе писали, IO было. Но была ли блокировка?
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
конечно была
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
но это философский вопрос
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
(если бы не было -- операция завершилась бы мгновенно)
источник

SZ

Sergey Zhmylove in Modern::Perl
Михаил Иванов
Мы ведь так или иначе писали, IO было. Но была ли блокировка?
Ну ты можешь dtrace-ом посчитать время выполнения сисколлов и на глаз оценить сисколлы с долгим выполнением
источник

b

basiliscos in Modern::Perl
в теории можно strace-подобной тулзенью мониторить. Просто по fd смотришь, что за операция, и был ли неблокирующий режим до этого. strace -e trace=network perl my-script.pl в качестве отправной точки. Понятно, что хотелось бы "изкоробочности", но я не знаю такого.
источник

МИ

Михаил Иванов... in Modern::Perl
Трассировки сискольные выходят за границы моих сил:) еще и это изучать:) Думал - вдруг изкоробки чего есть.
источник

AP

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