Query: anyevent::aggressiveidle
OS: debian
Section: 3pm
Format: Original Unix Latex Style Formatted with HTML and a Horizontal Scroll Bar
AnyEvent::AggressiveIdle(3pm) User Contributed Perl Documentation AnyEvent::AggressiveIdle(3pm)NAMEAnyEvent::AggressiveIdle - Aggressive idle processes for AnyEvent.SYNOPSISuse AnyEvent::AggressiveIdle qw(aggressive_idle}; aggressive_idle { ... do something important }; my $idle; $idle = aggressive_idle { ... do something important if (FINISH) { undef $idle; # do not call the sub anymore } };DESCRIPTIONSometimes You need to do something that takes much time but can be split into elementary phases. If You use AE::idle and Your program is a highload project, idle process can be delayed for much time (second, hour, day, etc). aggressive_idle will be called for each AnyEvent loop cycle. So You can be sure that Your idle process will continue.EXPORTSaggressive_idle Register Your function as aggressive idle watcher. If it is called in VOID context, the watcher wont be deinstalled. Be carrefully. In NON_VOID context the function returns a guard. Hold the guard until You want to cancel idle process. stop_aggressive_idle You can use the function to stop idle process. The function receives idle process PID that can be received in idle callback (the first argument). Example: use AnyEvent::AggressiveIdle ':all'; # or: use AnyEvent::AggressiveIdle qw(aggressive_idle stop_aggressive_idle); aggressive_idle { my ($pid) = @_; .... stop_aggressive_idle $pid; } The function will throw an exception if invalid PID is received. Continuous process. Sometimes You need to to something continuous inside idle callback. If You want to stop idle calls until You have done Your work, You can hold guard inside Your process: aggressive_idle { my ($pid, $guard) = @_; my $timer; $timer = AE::timer 0.5, 0 => sub { undef $timer; undef $guard; # POINT 1 } } Until 'POINT 1' aggressive_idle won't call its callback. Feel free to stop_aggressive_idle before free the guard.AUTHORDmitry E. Oboukhov, <unera@debian.org>COPYRIGHT AND LICENSECopyright (C) 2011 by Dmitry E. Oboukhov This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available.VCSThe project is placed on my GIT repo: <http://git.uvw.ru/?p=anyevent-aggressiveidle;a=summary> perl v5.10.1 2011-03-01 AnyEvent::AggressiveIdle(3pm)
Related Man Pages |
---|
glutidlefunc(3glut) - suse |
anyevent::irc(3pm) - debian |
anyevent::impl::eventlib(3pm) - debian |
anyevent::readme(3pm) - debian |
coro::anyevent(3pm) - debian |
Similar Topics in the Unix Linux Community |
---|
finding idle time of a process |
Every session is expiring within 1 minute if it kept idle. |
How to kill process after x idle min? |
Need AnyEvent help |
User process information and idle times |