tttime.h
1 2 3 4 5 6 7 8 9 |
```C++ __pragma("once") #include <Windows.h> #ifndef _XSLEEP_H_ #define _XSLEEP_H_ void XSleep(int nWaitInMSecs); #endif // _XSLEEP_H_ //非阻塞版本的延时实现(区别于Sleep()) ``` |
tttime.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include "tttime.h" struct XSleep_Structure { //int duration; //HANDLE eventHandle; int duration {0}; HANDLE eventHandle { nullptr }; }; DWORD WINAPI XSleepThread(LPVOID pWaitTime) { //XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime; XSleep_Structure *sleep = static_cast<XSleep_Structure *>(pWaitTime); Sleep(sleep->duration); SetEvent(sleep->eventHandle); return 0; } void XSleep(int nWaitInMSecs) { XSleep_Structure sleep; sleep.duration = nWaitInMSecs; sleep.eventHandle = CreateEvent(NULL, TRUE, FALSE, NULL); DWORD threadId; CreateThread(NULL, 0, &XSleepThread, &sleep, 0, &threadId); MSG msg; while (::WaitForSingleObject(sleep.eventHandle, 0) == WAIT_TIMEOUT) { if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } } CloseHandle(sleep.eventHandle); } |
声明:本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ string←转换→LPCSTR10/12
- ♥ Lua_调用 C++如何和Lua结合09/27
- ♥ Linux 高性能服务器编程:网络基础编程二11/28
- ♥ 【Javascript】赋值解构,日期时间,JSON04/05
- ♥ Windows 核心编程 _ 作业07/01
- ♥ Macos自动更新相关06/01