OS / 线程哪些内容是私有的和共享的?
生活随笔
收集整理的這篇文章主要介紹了
OS / 线程哪些内容是私有的和共享的?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、私有
TLS 的用法很簡單,如果要定義一個全局變量為 TLS 類型,只需在它定義前加上相應的關鍵字即可。
_thread int number; // gcc _declspec(thread) int number; // msvc一旦一個全局變量被定義程 TLS 類型的,那么每個線程都會擁有這個變量的一個副本,任何線程對該變量的修改都不會影響其他線程中該變量的副本。
當使用 _declspec(thread) int number 定義一個線程私有變量時,編譯器會把這些變量放到 PE 文件的“.tls”段中。當系統啟動一個新的線程時,它會從進程的堆中分配一塊足夠大小的空間,然后把“.tls”段中的內容復制到這塊空間中,于是每個線程都有自己獨立的一個“.tls"副本。所以對于同一個變量,它們在不同線程中的地址都是不一樣的。
二、線程共享(進程所有)
?
(SAW:Game Over!)
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的OS / 线程哪些内容是私有的和共享的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 3.8.2 / 内置的数据
- 下一篇: OS / 进程中某个线程崩溃,是否会对其