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); }
In reply to Re: Perl threads: using yield() and Time::HiRes usleep() in Linux/*nix
by ikegami
in thread Perl threads: using yield() and Time::HiRes usleep() in Linux/*nix
by ait
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |