src/os/windows/vm/os_windows.cpp

Print this page




3479       phri = new HighResolutionInterval( ms );
3480     if (WaitForMultipleObjects(1, events, FALSE, (DWORD)ms) == WAIT_TIMEOUT) {
3481       result = OS_TIMEOUT;
3482     } else {
3483       ResetEvent(osthread->interrupt_event());
3484       osthread->set_interrupted(false);
3485       result = OS_INTRPT;
3486     }
3487     delete phri; //if it is NULL, harmless
3488 
3489     // were we externally suspended while we were waiting?
3490     jt->check_and_wait_while_suspended();
3491   } else {
3492     assert(!thread->is_Java_thread(), "must not be java thread");
3493     Sleep((long) ms);
3494     result = OS_TIMEOUT;
3495   }
3496   return result;
3497 }
3498 










3499 // Sleep forever; naked call to OS-specific sleep; use with CAUTION
3500 void os::infinite_sleep() {
3501   while (true) {    // sleep forever ...
3502     Sleep(100000);  // ... 100 seconds at a time
3503   }
3504 }
3505 
3506 typedef BOOL (WINAPI * STTSignature)(void) ;
3507 
3508 os::YieldResult os::NakedYield() {
3509   // Use either SwitchToThread() or Sleep(0)
3510   // Consider passing back the return value from SwitchToThread().
3511   if (os::Kernel32Dll::SwitchToThreadAvailable()) {
3512     return SwitchToThread() ? os::YIELD_SWITCHED : os::YIELD_NONEREADY ;
3513   } else {
3514     Sleep(0);
3515   }
3516   return os::YIELD_UNKNOWN ;
3517 }
3518 




3479       phri = new HighResolutionInterval( ms );
3480     if (WaitForMultipleObjects(1, events, FALSE, (DWORD)ms) == WAIT_TIMEOUT) {
3481       result = OS_TIMEOUT;
3482     } else {
3483       ResetEvent(osthread->interrupt_event());
3484       osthread->set_interrupted(false);
3485       result = OS_INTRPT;
3486     }
3487     delete phri; //if it is NULL, harmless
3488 
3489     // were we externally suspended while we were waiting?
3490     jt->check_and_wait_while_suspended();
3491   } else {
3492     assert(!thread->is_Java_thread(), "must not be java thread");
3493     Sleep((long) ms);
3494     result = OS_TIMEOUT;
3495   }
3496   return result;
3497 }
3498 
3499 //
3500 // Short sleep, direct OS call.
3501 //
3502 // ms = 0, means allow others (if any) to run.
3503 //
3504 void os::naked_short_sleep(jlong ms) {
3505   assert(ms < 1000, "Un-interruptable sleep, short time use only");
3506   Sleep(ms);
3507 }
3508 
3509 // Sleep forever; naked call to OS-specific sleep; use with CAUTION
3510 void os::infinite_sleep() {
3511   while (true) {    // sleep forever ...
3512     Sleep(100000);  // ... 100 seconds at a time
3513   }
3514 }
3515 
3516 typedef BOOL (WINAPI * STTSignature)(void) ;
3517 
3518 os::YieldResult os::NakedYield() {
3519   // Use either SwitchToThread() or Sleep(0)
3520   // Consider passing back the return value from SwitchToThread().
3521   if (os::Kernel32Dll::SwitchToThreadAvailable()) {
3522     return SwitchToThread() ? os::YIELD_SWITCHED : os::YIELD_NONEREADY ;
3523   } else {
3524     Sleep(0);
3525   }
3526   return os::YIELD_UNKNOWN ;
3527 }
3528