你怎么暂停一个线程?

时间:2014-07-20 00:08:22

标签: c++ powerpc

你好我试图暂停一个帖子,但由于某种原因,它一直在崩溃游戏。 这是我得到的

void Test(){
    SuspendThread((PVOID)0x83593C24);//0x83593C24 The offset from the game
    Scr_AddInt(1);
    ResumeThread((PVOID)0x83593C24);
}

基本上我试图暂停而不是调用Add Int而不是恢复它

1 个答案:

答案 0 :(得分:0)

您需要使用创建线程时返回的线程句柄。请参阅CreateThread的文档; SuspendThread;和ResumeThread

特别是,来自CreateThread的文档:

  

如果函数成功,则返回值是新线程的句柄。如果函数失败,则返回值为NULL。

示例:

HANDLE thread_handle = CreateThread(/*args*/);  // hold on to this value (and check for failure)
if (thread_handle == NULL)
{
    // handle creation error
} 

DWORD suspend_retval = SuspendThread(thread_handle); 
if (suspend_retval == static_cast<DWORD>(-1))
{ 
    // handle suspend error
}

Scr_AddInt(1);  // original work  

DWORD resume_retval = ResumeThread(thread_handle);
if (resume_retval == static_cast<DWORD>(-1))
{ 
    // handle resume error
}

创建一个封装线程创建,暂停,恢复和终止的包装类可能是值得的。此类可以在内部执行所有错误检查,并在适当时抛出异常。