LINUX.ORG.RU

perl ALRM goto


0

1

ситуация следующая.

есть участок кода который может по разным причинам долго выполняться.
мне нужно чтобы при выполнение этого участка дольше чем 2 секунды, программа пропускала его и выполнялась дальше.

я сделал это через ALRM и goto
получилось

$SIG{ALRM} = sub {
      goto M1;
};

какие то команды;
какие то команды;
alarm(2);
долгий участок кода;
alarm(0);
M1:
какие то команды;

в принципе всё работает но меня терзают сомнения по поводу goto из функции.
это нормальное решение или есть что то более изящное?

★★★★★

Можно сделать замыкание с флагом и делать не goto, а вызов функции, которая бы проверяла значение флага (уже вызывалось, или еще нет).

DELIRIUM ☆☆☆☆☆
()

Пусти в треде, жди 2 секунды, убей тред :)

Jetty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.