类中使用多线程时的注意事项

刚才在写一个小程序,需要在类中添加一个能开启后台线程的函数。

为了能让线程函数参入到类中的数据处理,这个线程函数要么作为类的成员函数,要么设为友元函数。

不过我对友元函数不太感冒,就没采用这种方法。

但是,如果单纯的作为类的成员函数,那么这个又存在一个问题,就是因为成员函数隐含的this指针会导致线程函数不满足AfxBeginThread以及_beingthreadex等函数的参数要求。刚才在这里卡住了。

函数声明都没问题,但是就差在this指针上。

所以只要除去this指针就能实现要求。

我们知道C++中,静态成员函数是不存在this指针的。

接下来就很简单了,函数前面添加一个static就OK了~

但是另外需要注意的是,因为静态成员函数不允许访问类中的非静态成员变量(因为没有this指针),所以在线程函数中,在参数中传入this指针。

有点绕弯了,是吧?

其实this指针就是当前对象的首地址,可以通过类型转换来使用哦。

当然,如果你觉得有点烦,可以使用友元函数的。不过这种方法能保证更好地封装性。

posted @ 2013-05-25 16:01  Matrix_R  阅读(2603)  评论(0编辑  收藏  举报