Hintergrundprozeß:wenig Rechenleistung beanspruchen, sleep?

Hintergrundprozeß:wenig Rechenleistung beanspruchen, sleep?

am 05.06.2006 22:35:33 von Torsten Mohr

Hallo,

in einem Hintergrundprozeß in perl mache ich einerseits
Netzwerkkommunikation, andererseits auch einige zeitgesteuerte
Aufgaben.

Für die zeitgesteuerten Aufgaben (ca. auf 10 Sekunden genau)
möchte ich in einem eigenen thread die aktuelle Zeit
time() mit einem Startzeitpunkt vergleichen und
zwischendurch "sleep" aufrufen.

Ist das bzgl. der aufgewandten Rechenzeit optimal?

Wie ist das im Vergleich zu "alarm" zu sehen (auf einem
Linux-System)?

Oder gibt es eine Möglichkeit select() zu verwenden,
während auf eine Verbindung gewartet wird?


Grüße,
Torsten.

Re: Hintergrundprozeß: wenig Rechenleistung beanspruchen, sleep?

am 09.06.2006 02:42:55 von Maluku

Torsten Mohr schrieb:
> Hallo,
>
> in einem Hintergrundprozeß in perl mache ich einerseits
> Netzwerkkommunikation, andererseits auch einige zeitgesteuerte
> Aufgaben.
>
> Für die zeitgesteuerten Aufgaben (ca. auf 10 Sekunden genau)
> möchte ich in einem eigenen thread die aktuelle Zeit
> time() mit einem Startzeitpunkt vergleichen und
> zwischendurch "sleep" aufrufen.
>
> Ist das bzgl. der aufgewandten Rechenzeit optimal?
>
> Wie ist das im Vergleich zu "alarm" zu sehen (auf einem
> Linux-System)?
>
> Oder gibt es eine Möglichkeit select() zu verwenden,
> während auf eine Verbindung gewartet wird?
>
>
> Grüße,
> Torsten.
>
use IO::Select;

$s = IO::Select->new();
my $socket = IO::Socket->new();
$socket->bind->connect->usw.;
$s->add(\*STDIN);
$s->add();

while (1) {
@ready = $s->can_read(10);
foreach (@ready) {
do_sth_with_Handle($_);
}
check_for_jobs();
}

--
$_='';s%%`^.*`s;.*;uhtnmo;;a>lha~a>inu~a>fmk~a>rou~a>duM~a>b tl~s;&&&&&&;
!d1!l2!b3!i4!f5!r6q(?);e;Z``}a>&&&`sub# "1#{#"_=shift#;s^"2^"3#^;``;~`
return #"_#}``^!&&`"1(#""2)#\.`Z%x;s~Z~print~g;s/#/\\/g;
s/`(.)(.+?)`(.+?)`/s$1$2$1$3$1g\;/gsx;s;&;(.);g;y^"^$^;print ;