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

多線程環境下,程序真是危機四伏

開發 前端
本次線程安全是在宏觀代碼行執行層面, 上次的i++ 是在微觀寄存器層面,歸根到底讓多線程在多核環境下:代碼邏輯不能被打斷(代碼執行節奏可能被打斷)。

[[423322]]

你管這也叫線程安全?

最近大意了,竟然想將《面試官:實現一個帶值變更通知能力的Dictionary》一文中的臨界鎖只應用到寫操作。

內心旁白:讀操作又不會修改數據,無論是新值還是舊值,反正能讀到。

不過我又快速清醒了,臨界鎖還真就得這么加。臨界鎖的目的是保證這一段代碼邏輯不會被打斷。

假如只應用寫鎖:

某線程執行到寫鎖前(剛觸發了一次變通通知),這時cpu時間片輪轉或搶占, 切換到另外的線程又把這段代碼執行了一次(因為字典key-value還沒被前線程覆寫),這樣一次value變更實際執行了兩次變更操作,這就悲劇了。

結合之前《你管這叫線程安全?》一文中多線程對于i++、i--帶來的線程不安全的理解。

你品你細品:

本次線程安全是在宏觀代碼行執行層面, 上次的i++ 是在微觀寄存器層面,歸根到底讓多線程在多核環境下:代碼邏輯不能被打斷(代碼執行節奏可能被打斷)。

多線程環境下,程序運行真是危機四伏。

微軟官方怎么說?

還沒完, 我還從微軟官方原子操作[1]找到一段話:

Reads and writes of the following data types are atomic: bool, char, byte, sbyte, short, ushort, uint, int, float, and reference types. In addition, reads and writes of enum types with an underlying type in the previous list are also atomic. Reads and writes of other types, including long, ulong, double, and decimal, as well as user-defined types, are not guaranteed to be atomic. Aside from the library functions designed for that purpose, there is no guarantee of atomic read-modify-write, such as in the case of increment or decrement.

直譯起來:

① bool char byte sbyte uint int float 和引用類型上的讀寫是原子操作;

② 由以上類型定義的枚舉類型操作也是原子類型;

③ long ulong double decimal和用戶定義類型上的讀寫不保證是原子操作;

④ 除了庫文件本身設計了線程安全,一般況下下都不保證讀寫是原子操作, 這也包括i++、i--

這段文字是不是刷新了某些童靴的認知(包括在下):

1. 以后使用long num=8888;時要留個心眼,你也許會讀到long類型的部分字節。

2.直譯第①點說引用類型的讀寫是原子操作,第③點說用戶類型不保證原子操作,但是大部分的用戶類型是引用類型,這不互相矛盾了嗎?

我向微軟官方提出了我的這個疑問,有興趣可以關注這個github issue[2]。

說說我的看法:

直譯第①點中說int,引用類型等讀寫操作是原子操作:應該想表達的是純粹的賦值操作, 比如

  1. int a =1;                               //  賦值:線程安全 
  2. Student s = new Student {};             // 引用賦值:線程安全 
  3. Student  s2= s;                         // 引用賦值:線程安全 

針對引用類型Dictionary的其他操作自然不是線程安全的。

依據這個思路, 第①③點就不矛盾了。

 

That's All, 本文依舊是#線程安全#、#鎖# 這兩個老生常談的概念的延續, 我的知識體系也是在不斷迭代更新,不斷精煉。

 

責任編輯:武曉燕 來源: 精益碼農
相關推薦

2023-08-07 18:47:44

2014-11-06 09:44:28

2011-10-28 10:12:03

Android版本分化

2009-05-13 09:07:58

Web2.0FacebookTwitter

2012-07-12 12:26:36

2021-10-08 06:50:31

遠程辦公密碼

2012-07-23 00:56:37

2020-12-01 09:16:02

網絡安全信息安全技術

2009-03-30 13:36:43

2021-04-25 17:52:11

數字中國/網絡安全

2024-11-01 14:56:09

2022-05-07 09:49:39

漏洞網絡安全網絡攻擊

2013-08-15 16:44:25

2024-07-18 15:03:56

2010-07-27 09:17:23

服務器整合

2018-09-04 13:30:33

華為云

2011-11-25 15:50:15

信息圖Android

2015-05-27 14:46:03

戴爾云計算

2023-10-19 08:30:58

線程源碼thread

2011-10-31 15:59:56

SQLiteiPhoneiOS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费看啪啪网站 | 欧美精品网站 | 久久专区 | 91av导航| 精品视频国产 | 一区中文字幕 | 国产视频观看 | 中文字幕韩在线第一页 | 欧美一区二区三区国产精品 | 国产精品久久久久久亚洲调教 | 九九99久久 | 国产乱码精品一区二区三区中文 | 欧美激情亚洲天堂 | 免费亚洲成人 | 黄视频免费 | 视频在线一区二区 | 狠狠久| 国产精品一区2区 | 国产在线视频一区二区 | 久久久久久成人 | 亚洲免费视频一区二区 | 国产午夜精品一区二区三区嫩草 | 理论片87福利理论电影 | 99精品欧美一区二区三区综合在线 | 久久精品视频一区二区三区 | 91在线免费观看网站 | 91久久伊人 | 亚洲成av人片在线观看无码 | 国产激情在线观看视频 | 91精品国产综合久久久久久 | 国产色 | 国产成人精品一区二区三区 | 日韩aⅴ视频 | 成人免费视频观看视频 | 色婷婷激情综合 | 男女羞羞视频免费 | 密色视频 | 国产欧美精品一区二区三区 | 在线日韩 | 成人在线免费观看 | 久久久免费观看视频 |