C++ 让代码延期运行 但是程序不暂停
本帖最后由 Fxmles 于 2021-1-10 12:38 编辑在C++ ,不开子线程的情况下,让一段代码隔一段时间再运行,但是程序不暂停(也就是不像Sleep那样,能够延期,但是程序会暂停)
可以修改一下这个代码,在不开子线程的情况下,让程序延期,但是不暂停吗?
if(zombie->NotDying == false)
{
Creater::CreateGrave(zombie->Row,zombie->X/80);
Sleep(1000);
}
(环境vs2017)
{:301_1007:} 谢谢楼主的分享
struct XSleep_Structure
{
int duration;
HANDLE evenHandle;
};
// 非阻塞延时
void XSleep(int nWaitInMsecs)
{
XSleep_Structure sleep;
sleep.duration = nWaitInMsecs;
sleep.evenHandle = CreateEvent(NULL,TRUE,FALSE,NULL);
DWORD dwThreadId;
CreateThread(NULL,0,&XSleepThread,&sleep,0,&dwThreadId);
MSG msg;
while(::WaitForSingleObject(sleep.evenHandle,0) == WAIT_TIMEOUT)
{
// get and dispatch message
if(::PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
CloseHandle(sleep.evenHandle);
}
DWORD WINAPI XSleepThread(LPVOID pWaitTime)
{
XSleep_Structure *sleep = (XSleep_Structure*)pWaitTime;
Sleep(sleep->duration);
SetEvent(sleep->evenHandle);
return 0;
倾何 发表于 2021-1-10 12:37
struct XSleep_Structure
{
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2065 “XSleepThread”: 未声明的标识符 pvzclass c:\users\administrator\desktop\pvzclass\pvzclass\pvzclass\pvzclass.cpp 169
应该有不堵塞线程的延迟方法的。 b0y 发表于 2021-1-10 13:04
应该有不堵塞线程的延迟方法的。
怎么弄?楼上的编译不了,未定义的标识符 Fxmles 发表于 2021-1-10 13:09
怎么弄?楼上的编译不了,未定义的标识符
他那个方法也CreateThread了啊 闲月疏云 发表于 2021-1-10 13:13
他那个方法也CreateThread了啊
那只要不堵塞就行,问题是他的编译不了啊! 感谢楼主.牛逼 你直接用时间戳不就得了
页:
[1]
2