Fxmles 发表于 2021-1-10 12:31

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:}

jopyy2020 发表于 2021-1-10 12:35

谢谢楼主的分享

倾何 发表于 2021-1-10 12:37


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;

Fxmles 发表于 2021-1-10 12:46

倾何 发表于 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

b0y 发表于 2021-1-10 13:04
应该有不堵塞线程的延迟方法的。

怎么弄?楼上的编译不了,未定义的标识符

闲月疏云 发表于 2021-1-10 13:13

Fxmles 发表于 2021-1-10 13:09
怎么弄?楼上的编译不了,未定义的标识符

他那个方法也CreateThread了啊

Fxmles 发表于 2021-1-10 13:15

闲月疏云 发表于 2021-1-10 13:13
他那个方法也CreateThread了啊

那只要不堵塞就行,问题是他的编译不了啊!

bitter清酒 发表于 2021-1-10 13:17

感谢楼主.牛逼

虚无空幻 发表于 2021-1-10 13:25

你直接用时间戳不就得了
页: [1] 2
查看完整版本: C++ 让代码延期运行 但是程序不暂停