在C++类里面创建线程,如何传别的参数进去

 我来答
风后守望
2013-05-29 · TA获得超过297个赞
知道答主
回答量:121
采纳率:0%
帮助的人:72.8万
展开全部
貌似在线程中并不能直接调用悉拦类里面的参数,即使调用了也只是类中函数的形式,并手态无内容。一般参数想在线程中被调用,就要毕陆源new一个公用的内存空间供线程调用。以工作线程为例:
线程函数首先在类中声明
_beginthreadex( NULL, 0, yourfunc, this, 0, 0 );
(this指向类本身,比如是C**Dlg类)

线程函数UINT C**Dlg::yourfunc(void * pParam)中,pParam就为C**Dlg指针
通过强制转换提取:C**Dlg *p = (C**Dlg*)pParam;中的p就得到对应指针
之后通过p->就可以直接调用C**Dlg类中所使用的所有参数和函数(当然需要使用的参数必须在类中new过并赋值之后才能使用,参数使用完毕之后别忘了delete来释放开辟的内存)
zhq4
2013-05-29 · TA获得超过170个赞
知道答主
回答量:80
采纳率:100%
帮助的人:88.7万
展开全部
_beginthreadex( NULL, 0, yourfunc, param, 0, 0 );
param就可以传入你的参数了,这里的类型是空指针,所以你可以将你的数据橡烂取地址后再转换成空指针就可以传洞唯入了,严格来说是可以传入任何类型的参数的,传入后你只需要再转换到你需要的格式即可梁颤漏
追问
能不能再问你一个问题,在类里面定义一个线程,我怎样传入除了类指针另外的参数,而这个参数恰好需要反馈给用这个类的人,他需要里面的数据
追答
按你说的需求,不管这个参数是什么类型,因为你是放在线程里进行操作,所以加锁我就不说了,是必须的,除了这个类的指针this你可以传入以外,如果你要自定义类型都是可以的,比如你可以自定义一个struct sss把你要的数据全部封装到里面,然后建立struct的对象取地址传入即可,使用的时候,把线程的形参void* xxx转换成sss使用就行了,sss* pS = (sss*)xxx;这样你就可以使用任意类型当作参数传入了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式