CSDN论坛 > VC/MFC > 进程/线程/DLL

类的成员如何做线程函数? [问题点数:20分,结帖人brainf]

Bbs3
本版专家分:649
结帖率 100%
CSDN今日推荐
Bbs2
本版专家分:324
Bbs3
本版专家分:541
Bbs7
本版专家分:19126
Blank
红花 2003年6月 C/C++大版内专家分月排行榜第一
2002年5月 C/C++大版内专家分月排行榜第一
Blank
黄花 2003年9月 C/C++大版内专家分月排行榜第二
2002年6月 C/C++大版内专家分月排行榜第二
2002年4月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2007年3月 C/C++大版内专家分月排行榜第三
2007年2月 C/C++大版内专家分月排行榜第三
2007年1月 C/C++大版内专家分月排行榜第三
2003年7月 C/C++大版内专家分月排行榜第三
Bbs3
本版专家分:541
Bbs3
本版专家分:541
Bbs3
本版专家分:915
Bbs8
本版专家分:42972
Blank
微软MVP 2004年9月 荣获微软MVP称号
Blank
红花 2003年11月 VC/MFC大版内专家分月排行榜第一
Bbs4
本版专家分:1303
Bbs2
本版专家分:378
匿名用户不能发表回复!
其他相关推荐
MFC线程函数中访问成员变量的方法
用AfxBeginThread启动线程,线程的执行函数有两种定义的方法: 全局函数:UINT threadMessageBoxAdapter( LPVOID lParam ); 静态成员函数:static UINT threadMessageBoxAdapter( LPVOID lParam ); 若线程函数式全局函数,在线程中使用变量都必须是全局变量,不能使用对话框类成员变量,成员变量
MFC下给线程函数传递非静态成员变量
在MFC下类的线程函数必须是静态函数,也就是说不属于某个对象,而是属于类方法,当对象结束时线程并不结束。 而静态函数必须使用静态成员变量,因此不能使用普通的成员变量。 解决以上问题的办法就是——给线程方法传递 this 指针作为参数,通过 this 指针访问成员变量或者普通成员方法。 线程的创建和启动: AfxBeginThread((AFX_THREADPROC)Thre
boost thread 使用类的非静态成员函数做线程函数之【原理】
大家知道,pthread_create()函数的线程函数必须是静态的函数,以标准的__cdecl的方式调用的,而C++的成员函数是以__thiscall的方式调用的,相当于一个普通函数有一个默认的const ClassType* this参数。     为数据封装的需要,我常常把线程函数封装在一个类的内部,定义一个类的私有静态成员函数来作为pthread的线程函数,通常如下: class
VC多线程中全局函数如何调用对话框类成员变量及成员函数
最近做VC时,需要用到多线程。在网上基于对话框的MFC例程中,网上所有例程均将线程函数定义为全局函数,而我在全局函数中需要用到对话框Dlg类成员函数,此时使用This指针。      1)先申请个全局void类型指针: void *pdlg; 2)在dlg InitDialog中,将该void指针初始化为this: pdlg= this; 3)在全局函数中加入以下程序
在线程中执行类成员变量
一般,线程都是全局函数,那要想在线程中使用类成员函数怎么办呢?    解决途径是: 将类的指针作为参数 传递给线程函数。   SearchProcess()是CMainFrame类成员函数   SearchThread(LPVOID pParam)  线程函数   CMainFrame::Fun()  --------  当调用此函数时,执行线程 方法一:
Static 静态成员函数与多线程
Static
C++类成员函数作为线程回调函数
C++类成员函数作为回调函数的方法
C++ 11 线程调用类的成员函数解决办法
在C++中,_beginthreadex 创建线程是很麻烦的。要求入口函数必须是类的静态函数。 通常,可以采用thunk,或者模板来实现。 因C++ 11中引入了 std::async ,可以很好的解决这个问题了。 值得注意的是,在循环中 std::async 创建线程,我试了好多次总是失败,后来看老外的代码,采用 std::move解决了问题。 具体见实现代码。   // Con
类的非静态成员函数做boost::thread参数
void PosixClientImpl::Start() {   m_thread = boost::thread(boost::bind(&PosixClientImpl::processMessages, this)); }
简析function/bind如何实现类成员函数指针绑定调用
<br />在一次项目开发中,需要将类内的一些非static成员方法作为线程函数启动,<br />大家都知道了,线程函数是有要求的,包括返回值、参数类型和个数,而且要求是全局函数或类内的static函数。<br />当然,使用做多的是,在外面封装一下函数,然后把类实体,如this作为参数传递进去,然后在函数内通过this调用成员方法。<br />但这样做比较别扭,额外写不少不少代码,而boost的function和bind恰恰解决了这个问题。<br />可能不少人有疑惑,类的非static成员函数为啥就比较
关闭