线程函数

 
在启动一个线程之前,必须为线程编写一个全局的线程函数,这个线程函数接受一个 32 位的 LPVOID 作为参数,返回一个 UINT
一般来说, C++ 的类成员函数不能作为线程函数。这是因为在类中定义的成员函数,编译器会给其加上 this 指针。
如果一定要以类成员函数作为线程函数,通常有如下解决方案:
1 )将该成员函数声明为 static 类型,去掉 this 指针;
将成员函数声明为静态虽然可以解决作为线程函数的问题,但是它带来了新的问题,那就是 static 成员函数只能访问 static 成员。解决此问题的一种途径是可以在调用类静态成员函数(线程函数)时将 this 指针作为参数传入,并在该线程函数中用强制类型转换将 this 转换成指向该类的指针,通过该指针访问非静态成员。
2 )不定义类成员函数为线程函数,而将线程函数定义为类的友元函数。这样,线程函数也可以有类成员函数同等的权限;
3 )可以对非静态成员函数实现回调,并访问非静态成员。
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值