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:
parent
14f5b5750d
commit
5d98a311e4
3 changed files with 5 additions and 5 deletions
|
@ -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)) {
|
||||
|
|
|
@ -5,7 +5,7 @@ void sync::yield() {
|
|||
#ifdef __APPLE__
|
||||
pthread_yield_np();
|
||||
#elif __WIN32__
|
||||
|
||||
Sleep(1);
|
||||
#else
|
||||
pthread_yield();
|
||||
#endif
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue