多线程都调用一个函数,在这个函数中的一个局部变量什么情况会被修改

183 篇文章 6 订阅
127 篇文章 11 订阅

对于一个局部变量应该是各线程独立的,一个线程不会改变另一个线程的临时变量。

多线程时, 几个线程间输出信息是交叉在一起的, 但你又没有区分是哪个线程输出的, 所以你自己就误认为是同一个线程输出的东西被改变了.  实际上是你自己的理解错误.

所有线程都用cout输出内容,你如何判断哪些内容是哪个线程输出的,
而且cout是一个全局变量,多线程同时访问需要加锁,否则会出现一些莫名其妙的情况

结论: 局部变量是不会被修改的,而全局变量则很容易就被修改了,而你却还不知道。

//

多线程中,不同线程调用同一个函数,使用的是同一份代码还是不同线程用函数的多个拷贝?为什么?即每个线程用一个拷贝函数。
不同线程中调用函数的局部变量是否指向的都指向同一个?

每个线程有自己的堆栈,所以调用函数时对函数的相关参数也是各有一份的,不用担心;只是全局变量需要考虑同步。



原文链接:https://blog.csdn.net/mangobar/article/details/53006567

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值