多线程都调用一个函数,在这个函数中的一个局部变量什么情况会被修改
生活随笔
收集整理的這篇文章主要介紹了
多线程都调用一个函数,在这个函数中的一个局部变量什么情况会被修改
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
對于一個局部變量應該是各線程獨立的,一個線程不會改變另一個線程的臨時變量。
多線程時,?幾個線程間輸出信息是交叉在一起的,?但你又沒有區(qū)分是哪個線程輸出的,?所以你自己就誤認為是同一個線程輸出的東西被改變了.??實際上是你自己的理解錯誤.
所有線程都用cout輸出內容,你如何判斷哪些內容是哪個線程輸出的,
而且cout是一個全局變量,多線程同時訪問需要加鎖,否則會出現(xiàn)一些莫名其妙的情況
結論: 局部變量是不會被修改的,而全局變量則很容易就被修改了,而你卻還不知道。
//
多線程中,不同線程調用同一個函數(shù),使用的是同一份代碼還是不同線程用函數(shù)的多個拷貝?為什么?即每個線程用一個拷貝函數(shù)。
不同線程中調用函數(shù)的局部變量是否指向的都指向同一個?
每個線程有自己的堆棧,所以調用函數(shù)時對函數(shù)的相關參數(shù)也是各有一份的,不用擔心;只是全局變量需要考慮同步。
原文鏈接:https://blog.csdn.net/mangobar/article/details/53006567
總結
以上是生活随笔為你收集整理的多线程都调用一个函数,在这个函数中的一个局部变量什么情况会被修改的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SIP与RTP综合应用5-RTP解包过程
- 下一篇: 架构设计 例子和实践