关于在C++类里面建立线程
2015-06-28 13:55
204 查看
将线程函数声明为静态函数或者友元函数,但是静态函数只能访问静态成员变量,所以利用参数将this传进函数来,就可以通过该指针访问类成员变量和函数了。具体例子:
不多说了,直接上代码:
lll.h
#include<afxwin.h>
#include<iostream>
using namespace std;
int flag=1;
class realtask
{
public:
friend UINT task(LPVOID param);
BOOL starttask();
void display()
{
int b;
cout<<"请输入一个函数"<<endl;
cin>>b;
cout<<"display:"<<b<<endl;
}
void over()
{
flag=0;
}
};
UINT task(LPVOID param)
{
realtask *ptask=(realtask *)param;
while(flag)
{
cout<<"123"<<endl;
}
return 0;
}
BOOL realtask::starttask()
{
AfxBeginThread(task,this);
return true;
}
//主函数
#include "stdafx.h"
#include"lll.h"
int _tmain(int argc, _TCHAR* argv[])
{
realtask a;
a.starttask();
a.display();
a.over();
return 0;
}
主要是因为静态函数不会带类的参数,所以通过this指针
不多说了,直接上代码:
lll.h
#include<afxwin.h>
#include<iostream>
using namespace std;
int flag=1;
class realtask
{
public:
friend UINT task(LPVOID param);
BOOL starttask();
void display()
{
int b;
cout<<"请输入一个函数"<<endl;
cin>>b;
cout<<"display:"<<b<<endl;
}
void over()
{
flag=0;
}
};
UINT task(LPVOID param)
{
realtask *ptask=(realtask *)param;
while(flag)
{
cout<<"123"<<endl;
}
return 0;
}
BOOL realtask::starttask()
{
AfxBeginThread(task,this);
return true;
}
//主函数
#include "stdafx.h"
#include"lll.h"
int _tmain(int argc, _TCHAR* argv[])
{
realtask a;
a.starttask();
a.display();
a.over();
return 0;
}
主要是因为静态函数不会带类的参数,所以通过this指针
相关文章推荐
- [转]编译VC++程序warning C4819快速解决
- VC++调用天气预报Web services方法
- C++第4章 实验
- C++ primer 3rd 函数模板
- 杨辉三角
- C语言打印心图案----真好玩
- C语言学习资料下载
- c++学习-链表
- c++类内存机制探寻
- c++ 固定分配大小的简单内存池
- C++跟我一起透彻理解虚函数表
- 大话设计模式C++版——建造者模式
- 大话设计模式C++版——建造者模式
- Double-Checked Locking is Fixed In C++11
- C语言中~的用法
- 用递归方法求n阶勒让德多项式的值
- Hanoi(汉诺塔)问题。
- C++ and the Perils of Double-Checked Locking: Part II
- 编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。
- 编一程序,将两个字符串连接起来,不要用strcat函数。