直接上代码:
// test.h
class Test
{
public:
Test();
~Test();
void check();//子线程想要调用的函数
static DWORD WINAPI Fun(LPVOID lpParamter); //子线程函数
};
// test.cpp
void Test::check() {
for (int i = 0; i < 10; i++) {
printf("%d : Fun A Thread Fun Display!!\n", i);
Sleep(100);
}
}
DWORD WINAPI Test::Fun(LPVOID lpParamter)
{
Test *plocal = (Test*)lpParamter;
plocal->check();
return 0L;
}
// 测试代码 main.cpp
#include <windows.h>
#include "test.h"
#include <iostream>
using namespace std;
int main()
{
Test test;
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Test::Fun, &test, 0, NULL);//创建线程
CloseHandle(hThread);//关闭线程句柄
for (int i = 0; i < 10; i++) {
printf("%d : Main Thread Display!\n", i);
Sleep(100);
}
system("pause");
return 0;
}
运行结果:
注意:
- test.h中,声明时,要加上static;
- 主函数中,创建线程时,
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Test::Fun, &test, 0, NULL);
第三个参数、第四个参数的不同。 - test.cpp中,定义时,
plocal->check();
,就是运用指针的方式调用成员函数check()
。