线程之间如何调用变量
3个回答
展开全部
如楼上所说,线程的局部变量是无法互相调用的,可以声明一些全局变量。但需要在声明的时候bool前面加volatile,如果不加,很有可能你在2个线程中访问同一个变量时,2个变量的值是不一样的,因为编译器会进行优化。简单点说就是编译器在进行2个线程的处理时,都将该变量读入一个临时内存保存起来,在使用时直接使用,因为这样速度更快,而在变量前加volatile的目的是告诉编译器不要优化这个变量,每次使用他时,都从寄存器中读取,所以一当这个变量的值有变动时,只要有对它进行访问,都能拿到最新的数据。
如volatile bool IsNextData;
否则编译器会进行优化
IsNextData直接从寄存器中取值,而不访问内存。
而你在另一个线程中改变的事IsNextData内存中的值。
跟踪也是访问内存的值。
给你百科对volatile的解释:http://baike.baidu.com/view/608706.htm
如volatile bool IsNextData;
否则编译器会进行优化
IsNextData直接从寄存器中取值,而不访问内存。
而你在另一个线程中改变的事IsNextData内存中的值。
跟踪也是访问内存的值。
给你百科对volatile的解释:http://baike.baidu.com/view/608706.htm
展开全部
线程的局部变量是无法互相调用的
可以声明一些全局变量,也可以在堆中用new或malloc分配一些对象, 用于线程间相互访问,
但要做一些线程同步措施,比如临界、信号之类的
可以声明一些全局变量,也可以在堆中用new或malloc分配一些对象, 用于线程间相互访问,
但要做一些线程同步措施,比如临界、信号之类的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方法很多,常用的是定义private变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |