in reply to How can I force thread switching?
I have already explored Time::HiRes since usleep() is defined in this package.
I also attempted to wait for 0 unit of time (second or microsecond) to no avail. The null delay is probably detected somewhere and optimised out.
As stated in the manual, yield() is a no-op on most systems.
BrowserUk says yield is a mistake (like sleep 0), so sleep more, like 1/2 (or less) of the minimum time period that you believe it will take, like 33 milliseconds -- seems to hold true on win32, good rule of thumb :)