线程之间如何调用变量

 我来答
养海瑶PI
2011-01-10 · TA获得超过412个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:260万
展开全部
如楼上所说,线程的局部变量是无法互相调用的,可以声明一些全局变量。但需要在声明的时候bool前面加volatile,如果不加,很有可能你在2个线程中访问同一个变量时,2个变量的值是不一样的,因为编译器会进行优化。简单点说就是编译器在进行2个线程的处理时,都将该变量读入一个临时内存保存起来,在使用时直接使用,因为这样速度更快,而在变量前加volatile的目的是告诉编译器不要优化这个变量,每次使用他时,都从寄存器中读取,所以一当这个变量的值有变动时,只要有对它进行访问,都能拿到最新的数据。
如volatile bool IsNextData;
否则编译器会进行优化
IsNextData直接从寄存器中取值,而不访问内存。
而你在另一个线程中改变的事IsNextData内存中的值。
跟踪也是访问内存的值。
给你百科对volatile的解释:http://baike.baidu.com/view/608706.htm
sky780401
推荐于2018-05-10 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:108万
展开全部
线程的局部变量是无法互相调用的
可以声明一些全局变量,也可以在堆中用new或malloc分配一些对象, 用于线程间相互访问,
但要做一些线程同步措施,比如临界、信号之类的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Quasimodo2001
2011-01-10 · TA获得超过254个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:202万
展开全部
方法很多,常用的是定义private变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式