成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你管這叫“線程安全”?

安全 應用安全
類的實例成員(非靜態成員)為實例所有,在堆中分配,若在系統中只存在一個此類實例,在多線程環境下,“猶如”靜態變量那樣,被某個線程修改后,其他線程對修改均可見,故線程非安全。

 [[396911]]

本文轉載自微信公眾號「全棧碼農畫像」,作者全棧碼農畫像。轉載本文請聯系全棧碼農畫像公眾號。

今日份的干糧:

1.什么叫線程安全?

2.線程安全與變量的關系?

  • 變量又與堆/棧/靜態存儲區有密切關系

什么叫線程安全?

我們以常見的一行代碼i++ ,i-- 為例, 計算機的操作姿勢可能與你想象的不一樣。

在大多數計算機中, 給變量自增自減并不是原子操作, 需要下面三步:

① 將變量值加載進寄存器

② 寄存器自增/自減值

③ 將寄存器值加載回原變量

多線程環境下,如果你不使用一些原子鎖操作:

線程A ( i++ )可能只執行了前面兩步后,之后CPU輪詢切換到其他線程或者線程A被搶占CPU;線程B ( i-- )欻欻執行完所有的三步;

當線程A重新獲得CPU,執行第三步, 一下子影響了線程B的執行預期。

上圖栩栩如生、動靜相宜地描述了 啥叫線程安全,這就是線程不安全! ??

你能遇到的問題,在平臺這里都不叫問題。

上面的問題可以使用原子鎖InterLock, https://docs.microsoft.com/en-us/dotnet/api/system.threading.interlocked?view=net-5.0。

更多的關于線程安全的八股文 (請看這個,這個我面試騰訊考過,這個題目O了)

線程安全?#變量#

線程安全的著力點,或者說問題的出發點是變量

--- ---
棧區(stack) 由編譯器自動分配釋放 ,存放函數的參數、局部變量
堆區(heap) 一般由程序員分配釋放, 若程序員不釋放,程序可能不定時回收
全局區(靜態區)(static) 全局變量和靜態變量的存儲是放在一塊的,程序結束后系統釋放
文字常量區 常量字符串就是放在這里的。程序結束后由系統釋放
程序代碼區 存放函數體的二進制代碼
  1. using System; 
  2. public class StaticTest 
  3.     static int count
  4.     int number; 
  5.     public StaticTest() 
  6.     { 
  7.         count = count + 1; 
  8.         number = count
  9.     } 
  10.     public void display() 
  11.     { 
  12.        Console.WriteLine("object={0}:count={1}", number, count);  
  13.     } 
  14. class MainTest 
  15.     public static void Main() 
  16.     { 
  17.         StaticTest a = new StaticTest(); 
  18.         a.display(); 
  19.     } 

  • 不要認為[number是值類型,就存儲在棧區]
  • 引用類型的值指向堆區, 引用本身的值通常是32位或64位整形
  • 局部變量的值存儲在棧區

1. 靜態成員:線程非安全

類的靜態成員即類變量,位于全局區(靜態區),為所有對象共享,一旦靜態變量被修改,其他對象對修改均可見,故線程非安全。

2.實例成員:單例模式(只有一個對象實例存在)線程非安全,非單例線程安全

類的實例成員(非靜態成員)為實例所有,在堆中分配,若在系統中只存在一個此類實例,在多線程環境下,“猶如”靜態變量那樣,被某個線程修改后,其他線程對修改均可見,故線程非安全;

如果每個線程執行都是使用不同對象,那實例成員的修改將互不影響,故線程安全。

3. 局部變量:線程安全

每個線程執行時將會把局部變量放在各自棧幀的工作內存中,線程間不共享,故不存在線程安全問題。

 

責任編輯:武曉燕 來源: 全棧碼農畫像
相關推薦

2021-04-01 08:50:54

SentinelRedis 集群原理

2021-03-11 11:01:22

Redis架構數據

2021-01-14 09:04:24

線程池工具類面試

2022-02-10 08:07:45

DubboRPC框架

2020-09-03 06:42:12

線程安全CPU

2013-08-15 09:55:41

2017-07-06 15:36:56

線程線程安全開發

2021-03-11 12:27:36

java 變量數量

2022-07-08 16:10:55

線程安全對象

2021-04-26 08:16:18

CPU 語言編寫

2013-09-12 11:07:01

2019-12-20 07:28:45

Docker容器安全云計算

2012-04-16 10:12:54

Java線程

2024-05-20 13:13:01

線程安全Java

2019-05-14 08:44:13

面試面試官線程安全

2021-11-02 13:05:14

深信服

2025-01-27 00:00:00

線程安全Java

2023-01-29 15:02:20

2024-05-29 08:56:31

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一区不卡 | 欧美一级欧美一级在线播放 | 久久99精品久久久久久琪琪 | 久久精品色视频 | 婷婷国产一区二区三区 | 国产中文一区二区三区 | 伊人色综合久久久天天蜜桃 | 亚洲大片在线观看 | 婷婷成人在线 | 日韩午夜网站 | 日韩成人 | 亚洲一区二区免费视频 | 色啪网| 久优草 | 精品国产一区二区三区观看不卡 | 瑞克和莫蒂第五季在线观看 | 黄色网址在线播放 | 成人精品在线观看 | 日韩在线一区二区三区 | 精品国产视频在线观看 | 国产成人免费视频网站高清观看视频 | 国产精品美女一区二区 | 亚洲欧美视频一区 | 日韩中文在线 | 国产精品视频免费观看 | 精品久久久久一区二区国产 | 欧美国产精品一区二区三区 | 成人永久免费视频 | 成人深夜福利 | 在线观看亚洲精品 | 精品一区二区久久久久久久网站 | 黄色网址大全在线观看 | 欧美一二精品 | av在线一区二区 | 色爱区综合 | 日韩国产欧美视频 | 中文字幕免费中文 | 亚洲日韩中文字幕一区 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 欧美日韩一区二区三区在线观看 | 欧美激情精品久久久久 |