日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OS / 线程哪些内容是私有的和共享的?

發(fā)布時(shí)間:2024/10/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OS / 线程哪些内容是私有的和共享的? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、私有

  • 棧(局部變量,函數(shù)的參數(shù))。
  • 線程局部存儲(chǔ)(Thread Local Storage,TLS),有限的容量。
  • 寄存器 (執(zhí)行流的基本數(shù)據(jù))。
  • TLS 的用法很簡(jiǎn)單,如果要定義一個(gè)全局變量為 TLS 類型,只需在它定義前加上相應(yīng)的關(guān)鍵字即可。

    _thread int number; // gcc _declspec(thread) int number; // msvc

    一旦一個(gè)全局變量被定義程 TLS 類型的,那么每個(gè)線程都會(huì)擁有這個(gè)變量的一個(gè)副本,任何線程對(duì)該變量的修改都不會(huì)影響其他線程中該變量的副本。

    當(dāng)使用 _declspec(thread) int number 定義一個(gè)線程私有變量時(shí),編譯器會(huì)把這些變量放到 PE 文件的“.tls”段中。當(dāng)系統(tǒng)啟動(dòng)一個(gè)新的線程時(shí),它會(huì)從進(jìn)程的堆中分配一塊足夠大小的空間,然后把“.tls”段中的內(nèi)容復(fù)制到這塊空間中,于是每個(gè)線程都有自己獨(dú)立的一個(gè)“.tls"副本。所以對(duì)于同一個(gè)變量,它們?cè)诓煌€程中的地址都是不一樣的。

    二、線程共享(進(jìn)程所有)

  • 全局變量。
  • 堆上的數(shù)據(jù)。
  • 函數(shù)里的靜態(tài)變量。
  • 程序代碼,任何線程都有權(quán)利讀取并執(zhí)行任何代碼。
  • 打開文件,A 線程打開的文件可以由 B 線程讀寫。
  • ?

    (SAW:Game Over!)

    與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的OS / 线程哪些内容是私有的和共享的?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。