C++类中定义线程
2015-12-07 17:51
363 查看
1. C++ 中如何定义线程函数
有两种方法:a. 定义线程函数为全局函数 b. 定义线程函数为类的静态成员函数
2. C++中的线程函数如何访问类中的成员变量
针对线程函数为类的静态成员进行说明。如果是静态数据成员,当然可以直接访问,但是如果要访问非静态数据成员,直接访问是做不到的。如果要想在线程函数中访问和操作类的非静态成员变量,可以把线程函数作为一个适配器,在适配器中调用类的非静态成员函数。例如:
class CMyClass
{
public:
void TestFunc();
static int ThreadFunc(LPVOID pParam);// Adapter
protected:
int ThreadFuncKernal();// Kernal
}
void CMyClass::TestFunc()
{
AfxBeginThread(TreadFunc, this);
}
// Thread function Adapter
int CMyClass::ThreadFunc(LPVOID pParam)
{
CMyClass *pObj = (CMyClass *)pParam;
return pObj->ThreadFuncKernal();
}
// Thread function kernal
int CMyClass::ThreadFuncKernal()
{
while(1)
{
// my thread
// to control class non-static member
}
return 0;
}
有两种方法:a. 定义线程函数为全局函数 b. 定义线程函数为类的静态成员函数
2. C++中的线程函数如何访问类中的成员变量
针对线程函数为类的静态成员进行说明。如果是静态数据成员,当然可以直接访问,但是如果要访问非静态数据成员,直接访问是做不到的。如果要想在线程函数中访问和操作类的非静态成员变量,可以把线程函数作为一个适配器,在适配器中调用类的非静态成员函数。例如:
class CMyClass
{
public:
void TestFunc();
static int ThreadFunc(LPVOID pParam);// Adapter
protected:
int ThreadFuncKernal();// Kernal
}
void CMyClass::TestFunc()
{
AfxBeginThread(TreadFunc, this);
}
// Thread function Adapter
int CMyClass::ThreadFunc(LPVOID pParam)
{
CMyClass *pObj = (CMyClass *)pParam;
return pObj->ThreadFuncKernal();
}
// Thread function kernal
int CMyClass::ThreadFuncKernal()
{
while(1)
{
// my thread
// to control class non-static member
}
return 0;
}
相关文章推荐
- C++的头文件和实现文件分别写什么
- C/C++语言中函数参数传递的三种方式
- c++设计模式(2)--------简单工厂模式
- 黑马程序员——C语言——位运算符和变量存储原理
- knn之构造kd树和最近邻求取c++实现
- C语言编程中实现输入密码回显星号
- C语言中可变参数的宏定义
- c语言宏定义,可变参数的使用
- C语言中可变参数的宏定义
- Q:C++与VC++的区别
- C++创建一个动态链接库工程
- C++创建一个动态链接库工程
- 黑马程序员——C语言基础---预处理的概念及分类
- C语言学习笔记(19) 多维数组和多维指针分析
- 找不到cpp文件 C1083:cannot find \xxx\xxx.cpp
- 【第14周 项目1 - (1)验证折半查找算法】
- C语言宏定义
- 【OpenCV】How to Use Tesseract with C++ or OpenCV
- 第11周项目1 二叉树算法验证
- C++正则表达式