C++中线程函数中方访问成员变量的问题
来源:互联网 发布:风油精 知乎 肛门 编辑:程序博客网 时间:2024/06/07 01:25
1.C++ Java 和C 三种语言中static的差别:
C++中的static和Java中基本类似 但是C语言不同:
在C语言中,关键字static有三个明显的作用:
1在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
1在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
2.C++中线程函数中方访问成员变量的问题
C++中线程函数可以使用2中方法定义:
1)全局函数。如 UINT MyThread(LPVOID p)
2)类的静态成员函数。如 static UINT MyView::MyThread(LPVOID p)
1)全局函数。如 UINT MyThread(LPVOID p)
2)类的静态成员函数。如 static UINT MyView::MyThread(LPVOID p)
线程函数中方访问成员变量的问题 实现方式有不少
基本原理都是把静态函数做成一个适配器(adapter) 调用另外一个函数
如下面的代码:
class A
{
public:
A();
static UINT ThreadProc(LPVOID pParam);
protected:
UNIT Run(); //线程的真正实现类
}
UINT A::ThreadProc(LPVOID pParam) //静态函数做成一个适配器
{
A *pObj = (A*)pParam;
return pObj->Run();
}
UNIT Run()
{
while (1)
{
//.......
}
return 0;
}
创建线程时:
CWinThread *pThread = AfxBeginThread(ThreadProc, this);
{
public:
A();
static UINT ThreadProc(LPVOID pParam);
protected:
UNIT Run(); //线程的真正实现类
}
UINT A::ThreadProc(LPVOID pParam) //静态函数做成一个适配器
{
A *pObj = (A*)pParam;
return pObj->Run();
}
UNIT Run()
{
while (1)
{
//.......
}
return 0;
}
创建线程时:
CWinThread *pThread = AfxBeginThread(ThreadProc, this);
- C++中线程函数中方访问成员变量的问题
- C++中线程函数中方访问成员变量
- 线程函数中访问成员变量的方法
- 线程函数中访问成员变量的方法(转)
- 线程函数中访问成员变量的方法
- MFC线程函数中访问成员变量的方法
- C++中静态成员函数访问成员变量问题
- C++中静态成员函数访问成员变量问题
- C++中静态成员函数访问成员变量问题
- C++中静态成员函数访问成员变量问题
- linux C++ 类成员函数中创建线程,且能访问类中其他成员变量
- 线程的静态函数如何访问类的非静态成员函数或成员变量
- C++类中成员变量和函数的访问范围
- C语言中结构体指针的成员变量访问
- 在线程函数中使用主窗口的成员变量
- C++中静态成员函数访问非静态成员变量
- C++中静态成员函数访问非静态成员变量
- C++中static成员函数访问非static成员变量
- spring in action 的Hello World
- linux 常用命令及技巧
- js+ asp.Net ajax开发163邮箱效果(列表底色、多选拖动等)--checkBox多选
- 使用WTL+OGRE编写3D程序(2) - 窗口消息函数
- 找不到getter Property XXX问题解决方法
- C++中线程函数中方访问成员变量的问题
- Python中的bool
- 联想X300:成功的产品、失败的定价
- 在ASP.NET 2.0中直接得到本页面生成的HTML代码
- 干嘛要听你那些伤心的事啊
- 晕死,太奇怪了,远程连接oracle
- 回溯法介绍
- #include "stdio.h"与 #include 的区别
- 软件版本中的Alpha,Beta,RC,Trial是什么意思?