Настройка будильника в темах с сообщением, если истекло время ожидания - PullRequest
0 голосов
/ 06 октября 2011

Я ссылаюсь на этот вопрос, но не хотел публиковать его там, как это было полгода назад, и на него уже дан ответ.

Я думаю, что мне нужноустановить сигнал тревоги в потоке, потому что он прослушивает соединение (сокеты), и я не знаю, в какое время установить сигнал тревоги, пока клиент не отправит команду.

Краткий контекст: клиенты отправляют команду, которая приказывает моему сценарию запустить самописный модуль perl.Этот модуль нужно убить, если он работает дольше, чем должен.Это «следует» очень специфично и будет записано в файле конфигурации для каждого модуля.

Я пробовал сигнал тревоги в простом сценарии на Perl, и он работал довольно хорошо - даже с моим собственным сообщением.

Я могу позволить сигналу тревоги выйти из сценария, но он вообще не дает мне сообщения.

Использовал этот пример, пока я не заметил, что может отличаться от потоков.

Затем я попробовал Thread :: alarm ($ time) , но, как я начал с Perl около 3 недель назад, я не смог правильно его реализовать (он просто ничего не делает. Он даже не заканчивает программу).

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

1 Ответ

0 голосов
/ 06 октября 2011

Вы уже пробовали AnyEvent ?

AnyEvent позволяет настроить наблюдателей, действующих как таймеры:

# one-shot or repeating timers
my $w = AE::timer $seconds,         0, sub { ... }; # executed only once 
my $w = AE::timer $seconds, $interval, sub { ... }; # executed every $interval

$seconds может быть определено на этапе конфигурации, при запуске потока.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...