线程的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:15:49
创建了一个类方法,因为要做成线程
定义为static DWORD WINAPI func1()
{
while(waitforsingleobject(hSignal,0))
{
}
}

如何定义这个hSignal?使得可以在外部方法发送事件跳出这个循环。
Event?
CEvent!
主要是因为线程方法是静态的,而外部方法是非静态的,静态方法无法调用普通成员函数。
全局变量似乎可以解决,但是一定要用全局变量吗?

#include <windows.h>
#include <stdio.h>

class CTest
{
protected:
    HANDLE m_hEvent;
    static DWORD WINAPI Thread(LPVOID pParam);
public:
    CTest();
    void Start();               //工作线程开始
    void End();                 //工作线程结束
};

CTest::CTest()
{
    m_hEvent = NULL;
}

DWORD WINAPI CTest::Thread(LPVOID pParam)
{
    CTest *p = (CTest *)pParam;
    while (WaitForSingleObject(p->m_hEvent, 0) != WAIT_OBJECT_0)
    {
        Sleep(100);
    &nbs