/*Check*/ if (!SwitchToThread()) Sleep(1); /*Gav*/ Sleep( (iterations > 65535) ? 1 : 0); /*Fast*/ Sleep(0); // Will always use 100% core on wait. /*Orig*/ Sleep(1); Job time (ms) Total time taken for 1000 jobs (s): Check Gav Fast Orig 0.016 0.562 0.015 0.016 9.033 0.031 10.139 0.125 0.032 11.901 0.078 2.059 0.094 0.125 12.493 0.156 13.275 0.297 0.156 12.884 0.296 7.176 0.328 0.312 14.053 0.593 14.335 0.639 0.624 14.459 1.186 12.729 1.248 1.248 15.255