Periodically wake up the thread in monitor::wait

There is a small window where a thread can go to sleep in
Monitor::wait after releasing the lock but before another thread
notifies the monitor and updates the on-deck thread.

A simple approach to fix this problem is to wake-up the Monitor::wait
every 10 milliseconds and check if it is on-deck.

Change-Id: I4b9abda89d1fc653cdae2b4c84cdda01efde1cf2
Ta zmiana jest zawarta w:
Laurent Morichetti authored and Saleel Kudchadker committed 2020-09-01 18:09:38 -04:00
1 rodzic 080dcfe857
złożenie 5079410c94
3 plików zmienionych
+39 -2

Żadne pliki nie pasują do Twojego wyszukiwania

+1 -1
Wyświetl plik
@@ -251,7 +251,7 @@ void Monitor::wait() {
}
// now go to sleep
else {
suspend.wait();
suspend.timedWait(10);
}
spinCount++;
}