00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "CArchSleepWindows.h"
00016 #include "CArch.h"
00017 #include "CArchMultithreadWindows.h"
00018
00019
00020
00021
00022
00023 CArchSleepWindows::CArchSleepWindows()
00024 {
00025
00026 }
00027
00028 CArchSleepWindows::~CArchSleepWindows()
00029 {
00030
00031 }
00032
00033 void
00034 CArchSleepWindows::sleep(double timeout)
00035 {
00036 ARCH->testCancelThread();
00037 if (timeout < 0.0) {
00038 return;
00039 }
00040
00041
00042
00043
00044
00045 CArchMultithreadWindows* mt = CArchMultithreadWindows::getInstance();
00046 if (mt != NULL) {
00047 HANDLE cancelEvent = mt->getCancelEventForCurrentThread();
00048 WaitForSingleObject(cancelEvent, (DWORD)(1000.0 * timeout));
00049 if (timeout == 0.0) {
00050 Sleep(0);
00051 }
00052 }
00053 else {
00054 Sleep((DWORD)(1000.0 * timeout));
00055 }
00056 ARCH->testCancelThread();
00057 }