Putting out the burning tree on Windows. Turns out you can completely starve threads by not yielding on windows/vmware, really weird.

This commit is contained in:
Michael Bebenita 2010-08-16 18:44:26 -07:00
parent 14f5b5750d
commit 5d98a311e4
3 changed files with 5 additions and 5 deletions

View file

@ -400,9 +400,9 @@ rust_dom::start_main_loop()
rust_task *scheduled_task = schedule_task();
// If we cannot schedule a task because all other live tasks
// are blocked, yield and hopefully some progress is made in
// other domains.
// The scheduler busy waits until a task is available for scheduling.
// Eventually we'll want a smarter way to do this, perhaps sleep
// for a minimum amount of time.
if (scheduled_task == NULL) {
if (_log.is_tracing(rust_log::TASK)) {

View file

@ -5,7 +5,7 @@ void sync::yield() {
#ifdef __APPLE__
pthread_yield_np();
#elif __WIN32__
Sleep(1);
#else
pthread_yield();
#endif

View file

@ -6,12 +6,12 @@
#endif
timer::timer() {
reset(0);
#if __WIN32__
uint64_t ticks_per_second;
QueryPerformanceFrequency((LARGE_INTEGER *)&ticks_per_second);
_ticks_per_us = ticks_per_second / 1000000;
#endif
reset(0);
}
void