成员函数作为线程函数的一种方法

由于this 的原因,类的成员函数无法作为线程函数,只能将static 成员函数作为线程函数,但是static 成员函数不能访问非static 变量,要想访问static 变量,那么我们可以使用下面例子中的方法:

class TestThread

{

public :

    TestThread();

    ~TestThread();

 

    void thread(int t);

    int a;

    void createThread();

private :

    static DWORD WINAPI threadProc(LPVOID lpParameter);

    static TestThread *tt;

   

};

TestThread *TestThread::tt = NULL;

TestThread::TestThread()

{

    a = 0;

    tt = this ;

}

TestThread::~TestThread()

{

}

void TestThread::createThread()

{

    int t = 10;

    ::CreateThread(NULL, 0, threadProc, (LPVOID)&t, 0, NULL);

}

DWORD WINAPI TestThread::threadProc(LPVOID lpParameter)

{

    int cn = *(int *)lpParameter;

    tt->thread(cn);

    return 0;

}

void TestThread::thread(int t)

{

    for (int i=0; i

    {

        a++;

        cout<

    }

}

推荐网站:好巴鹿(http:// www.haobalu.com )

你可能感兴趣的:(技术应用)