src/os/windows/vm/os_windows.cpp

Print this page




3509   while (true) {    // sleep forever ...
3510     Sleep(100000);  // ... 100 seconds at a time
3511   }
3512 }
3513 
3514 typedef BOOL (WINAPI * STTSignature)(void) ;
3515 
3516 os::YieldResult os::NakedYield() {
3517   // Use either SwitchToThread() or Sleep(0)
3518   // Consider passing back the return value from SwitchToThread().
3519   if (os::Kernel32Dll::SwitchToThreadAvailable()) {
3520     return SwitchToThread() ? os::YIELD_SWITCHED : os::YIELD_NONEREADY ;
3521   } else {
3522     Sleep(0);
3523   }
3524   return os::YIELD_UNKNOWN ;
3525 }
3526 
3527 void os::yield() {  os::NakedYield(); }
3528 
3529 void os::yield_all() {
3530   // Yields to all threads, including threads with lower priorities
3531   Sleep(1);
3532 }
3533 
3534 // Win32 only gives you access to seven real priorities at a time,
3535 // so we compress Java's ten down to seven.  It would be better
3536 // if we dynamically adjusted relative priorities.
3537 
3538 int os::java_to_os_priority[CriticalPriority + 1] = {
3539   THREAD_PRIORITY_IDLE,                         // 0  Entry should never be used
3540   THREAD_PRIORITY_LOWEST,                       // 1  MinPriority
3541   THREAD_PRIORITY_LOWEST,                       // 2
3542   THREAD_PRIORITY_BELOW_NORMAL,                 // 3
3543   THREAD_PRIORITY_BELOW_NORMAL,                 // 4
3544   THREAD_PRIORITY_NORMAL,                       // 5  NormPriority
3545   THREAD_PRIORITY_NORMAL,                       // 6
3546   THREAD_PRIORITY_ABOVE_NORMAL,                 // 7
3547   THREAD_PRIORITY_ABOVE_NORMAL,                 // 8
3548   THREAD_PRIORITY_HIGHEST,                      // 9  NearMaxPriority
3549   THREAD_PRIORITY_HIGHEST,                      // 10 MaxPriority
3550   THREAD_PRIORITY_HIGHEST                       // 11 CriticalPriority
3551 };
3552 
3553 int prio_policy1[CriticalPriority + 1] = {




3509   while (true) {    // sleep forever ...
3510     Sleep(100000);  // ... 100 seconds at a time
3511   }
3512 }
3513 
3514 typedef BOOL (WINAPI * STTSignature)(void) ;
3515 
3516 os::YieldResult os::NakedYield() {
3517   // Use either SwitchToThread() or Sleep(0)
3518   // Consider passing back the return value from SwitchToThread().
3519   if (os::Kernel32Dll::SwitchToThreadAvailable()) {
3520     return SwitchToThread() ? os::YIELD_SWITCHED : os::YIELD_NONEREADY ;
3521   } else {
3522     Sleep(0);
3523   }
3524   return os::YIELD_UNKNOWN ;
3525 }
3526 
3527 void os::yield() {  os::NakedYield(); }
3528 





3529 // Win32 only gives you access to seven real priorities at a time,
3530 // so we compress Java's ten down to seven.  It would be better
3531 // if we dynamically adjusted relative priorities.
3532 
3533 int os::java_to_os_priority[CriticalPriority + 1] = {
3534   THREAD_PRIORITY_IDLE,                         // 0  Entry should never be used
3535   THREAD_PRIORITY_LOWEST,                       // 1  MinPriority
3536   THREAD_PRIORITY_LOWEST,                       // 2
3537   THREAD_PRIORITY_BELOW_NORMAL,                 // 3
3538   THREAD_PRIORITY_BELOW_NORMAL,                 // 4
3539   THREAD_PRIORITY_NORMAL,                       // 5  NormPriority
3540   THREAD_PRIORITY_NORMAL,                       // 6
3541   THREAD_PRIORITY_ABOVE_NORMAL,                 // 7
3542   THREAD_PRIORITY_ABOVE_NORMAL,                 // 8
3543   THREAD_PRIORITY_HIGHEST,                      // 9  NearMaxPriority
3544   THREAD_PRIORITY_HIGHEST,                      // 10 MaxPriority
3545   THREAD_PRIORITY_HIGHEST                       // 11 CriticalPriority
3546 };
3547 
3548 int prio_policy1[CriticalPriority + 1] = {