用非静态类成员函数作为线程函数

非静态的类成员函数是不能直接作为线程函数的,如果把成员函数声明为静态,可以解决问题,但是静态函数只能访问类

的静态成员,这又带来很多麻烦。

不过可以通过包装解决此问题,如下:

class test

{

    private:

          void func();//实际需要作为线程函数的函数

    public:

          static unsinged int _stdcall funcTread(PVOIN pvParam)  // 创建线程是传入的函数

          {

               (test*) ptest = (test*)pvParam;

               ptest-->func();

}

 

创建线程:

unsigned int  dwThreadID;

HANDLE hTreadServer =(HANDLE) _beginthreadex(NULL,0,test::funcTread,(PVOID)this,0,&dwThreadID);

 

再利用MFC进行多线程编程时应该经常用到。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值