vc多线程参数传递问题

如果我想要创建两个同级线程,并且这两个线程之间需要相互知道对方及自己的handle,以便出现问题时,能够互相把threadkill掉,应该怎样解决?注意主线程是不知道究竟... 如果我想要创建两个同级线程,并且这两个线程之间需要相互知道对方及自己的handle,以便出现问题时,能够互相把thread kill掉,应该怎样解决?注意主线程是不知道究竟有多少个子线程的,因此最好不要用全局变量处理。谢谢大家了! 展开
 我来答
LongNotDragon
2013-02-04 · TA获得超过151个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:178万
展开全部
可以这样做:
为线程参数定义一个结构体
struct threadParam
{
HANDLE* self;
HANDLE* other;
//还可以定义一些其他你认为需要的参数
};

//假设有2个线程A、B
HANDLE *HA = new HANDLE;
HANDLE *HB = new HANDLE;

threadParam *pA = new threadParam;
PA->self = HA;
PA->other = HB;

*HA = createthread(NULL,funcA,PA,....);

将PA做为参数传递给线程A。这样就可以在线程函数里通过指针使用a,b的线程句柄了。
同样创建b线程的时候这样做一遍就ok。

不知道这样说明白否?
百度网友a2bbae1
2013-02-04 · TA获得超过1208个赞
知道大有可为答主
回答量:6238
采纳率:16%
帮助的人:1876万
展开全部
说什么的概念。
COM操作,这将有其自己的的交叉线程和进程模型,这是一个复合模型,得出约7-8组合。学习COM,这是一定要彻底了解。业主的帮助文档阅读CoInitializeEx的功能,可以或多或少的经验。如果你不好好学习,看MSDN帮助文档,如坠云里雾里一般,这是很难理解的。因此,建议买这本书的COM,略见,其次线上,如CSDN有很多热心人写的关于多线程的进程内COM模型,并使用规则,优点和缺点,你可以阅读!

在MFC中,通过跨线程的变量的危险形成,这个概念可能不太可能。因此,在MFC中,我们似乎可以随意通过线程之间的变量,但其实是不正确的,典型的是主线程创建窗口和控制,最好不要直接操作其他线程,线程之间的方法,而是通过通信,这样主线程创建窗口和控件的操作窗口和控件。

因此,变量不能乱传的土地的COM,这个限制是非常明显的COM概念称为元帅的代理,STUB,当然,这主要是相关的过程相同的概念描述非线程创建的东西,,不是线程有将是一个问题。

接口的观点一样,这个接口不是轻易就能传递给工作线程的线程。
我的建议是:
内置的工作线程,因为数据库操作和反馈程序级的数据从数据库中需要进行再加工,这些步骤可以是非常耗时的,耗时的操作上UI线程,界面线程不能处理WM_XXX消息接口的假死。智能指针一样,这种事情上独立的管理工作线程,工作线程通过智能指针到数据库中的数据,然后再进行处理,存储的数据结果,如全局变量,虚拟内存,和其他地方的惯例程序。数据是通过自定义的消息发送到UI线程的自定义消息能够显示自定义消息,数据将被保存到该界面,这样的界面线程发送线程消息的功能是PostThreadMessage。
微妙的细节也可以考虑,到底是要创建自己的线程或使用线程池。凭借丰富的经验,会考虑很多问题,关键是要学习理论知识和实践不能。

最后,是矫正的概念,_ConnectionPtr它是一个标准的C + +类,C + +类可以重载 - >运算符,这个指针运算符被重载,类的实例变量在实际使用,其行为更像是一个指针,而不是一个普通的变量重载指针操作是智能指针,而不是指_ConnectionPtr类是一个智能指针,最多,它是一个智能指针类,我所看到的已转化为一个智能指针英文原版的SMART的指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式