类成员函数作为线程函数的几种方法
2015-10-05 22:19
309 查看
首先,类成员函数是不能够直接被当做线程的成员函数使用。
原因是,类中定义的成员函数,编译器会给其加上this指针。
解决方案有如下:
1.把成员函数声明成static类型,去掉this指针。但是这种方法有缺陷,以为在类中,静态成员函数只能够访问静态成员变量。因此不推荐这种方式。
2.把线程函数设置成类的友元函数,这样线性函数同样可以访问类中的成员变量,这种方式比较常用。
例如:
原因是,类中定义的成员函数,编译器会给其加上this指针。
解决方案有如下:
1.把成员函数声明成static类型,去掉this指针。但是这种方法有缺陷,以为在类中,静态成员函数只能够访问静态成员变量。因此不推荐这种方式。
2.把线程函数设置成类的友元函数,这样线性函数同样可以访问类中的成员变量,这种方式比较常用。
例如:
#include "windows.h" #include <process.h> class ExampleTask { public: friend void taskmain(LPVOID param); void StartTask(); int value; }; void taskmain(LPVOID param) { ExampleTask * pTaskMain = (ExampleTask *) param; //通过pTaskMain指针引用 } void ExampleTask::StartTask() { _beginthread(taskmain,0,this); } int main(int argc, char* argv[]) { ExampleTask realTimeTask; realTimeTask.StartTask(); return 0; }
相关文章推荐
- sizeof用法大总结(上)
- Windows驱动——虚拟机 虚拟串口 双机调试
- model中的自动验证 $_validate $_auto
- 设置popWindow背景变暗
- 黑马程序员—String、StringBuffer、StringBuilder
- AOP术语
- 堆和栈深层理解
- 初学NPOI
- 删除多级文件夹的程序,很好用
- 【RMQ问题】poj 3368 Frequent values
- 【BLE】CC2541之indicate
- Allods IP
- 学习计划
- iOS开发分分钟搞定C语言 —— 进制
- QT5 学习之路25---画刷和画笔
- leetcode206 Reverse Linked List
- 第二次作业
- 解剖窗口程序
- 深入理解按位异或运算符
- Npoi导出word(Peanuts)