in reply to Perl threads: using yield() and Time::HiRes usleep() in Linux/*nix
I concur. Sleeping already relinquishes the CPU, so yield is redundant and wasteful.
At least that's the theory, but it's supported by the following program using 0% CPU:
use Time::HiRes qw( usleep ); for (;;) { usleep(250000); }
Do you have any reason to believe otherwise?
Update: Screw theory, the following shows usleep does what you want.
use strict; use warnings; use Time::HiRes qw( usleep time ); use threads; { my $i = 0; my $s = time; my $t1 = async { usleep(250000); }; my $t2 = async { ++$i while $i < 50_000_000; }; $_->join() for $t1, $t2; my $e = time; printf("%.0f\n", ($e-$s)*100000); } { my $i = 0; my $s = time; my $t1 = async { }; my $t2 = async { ++$i while $i < 50_000_000; }; $_->join() for $t1, $t2; my $e = time; printf("%.0f\n", ($e-$s)*100000); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Perl threads: using yield() and Time::HiRes usleep() in Linux/*nix
by BrowserUk (Patriarch) on May 10, 2009 at 22:00 UTC | |
by ikegami (Patriarch) on May 10, 2009 at 23:40 UTC | |
by ait (Hermit) on May 11, 2009 at 04:09 UTC | |
by BrowserUk (Patriarch) on May 11, 2009 at 13:17 UTC | |
by ikegami (Patriarch) on May 11, 2009 at 04:20 UTC | |
|
Re^2: Perl threads: using yield() and Time::HiRes usleep() in Linux/*nix
by ait (Hermit) on May 10, 2009 at 20:19 UTC | |
|
Re^2: Perl threads: using yield() and Time::HiRes usleep() in Linux/*nix
by Anonymous Monk on May 12, 2011 at 07:43 UTC |