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

多線程環(huán)境下,程序真是危機(jī)四伏

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

[[423322]]

你管這也叫線程安全?

最近大意了,竟然想將《面試官:實(shí)現(xiàn)一個(gè)帶值變更通知能力的Dictionary》一文中的臨界鎖只應(yīng)用到寫操作。

內(nèi)心旁白:讀操作又不會(huì)修改數(shù)據(jù),無論是新值還是舊值,反正能讀到。

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

假如只應(yīng)用寫鎖:

某線程執(zhí)行到寫鎖前(剛觸發(fā)了一次變通通知),這時(shí)cpu時(shí)間片輪轉(zhuǎn)或搶占, 切換到另外的線程又把這段代碼執(zhí)行了一次(因?yàn)樽值鋕ey-value還沒被前線程覆寫),這樣一次value變更實(shí)際執(zhí)行了兩次變更操作,這就悲劇了。

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

你品你細(xì)品:

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

多線程環(huán)境下,程序運(yùn)行真是危機(jī)四伏。

微軟官方怎么說?

還沒完, 我還從微軟官方原子操作[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和用戶定義類型上的讀寫不保證是原子操作;

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

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

1. 以后使用long num=8888;時(shí)要留個(gè)心眼,你也許會(huì)讀到long類型的部分字節(jié)。

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

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

說說我的看法:

直譯第①點(diǎn)中說int,引用類型等讀寫操作是原子操作:應(yīng)該想表達(dá)的是純粹的賦值操作, 比如

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

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

依據(jù)這個(gè)思路, 第①③點(diǎn)就不矛盾了。

 

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

 

責(zé)任編輯:武曉燕 來源: 精益碼農(nóng)
相關(guān)推薦

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

遠(yuǎn)程辦公密碼

2012-07-23 00:56:37

2020-12-01 09:16:02

網(wǎng)絡(luò)安全信息安全技術(shù)

2009-03-30 13:36:43

2021-04-25 17:52:11

數(shù)字中國/網(wǎng)絡(luò)安全

2024-11-01 14:56:09

2022-05-07 09:49:39

漏洞網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2013-08-15 16:44:25

2024-07-18 15:03:56

2010-07-27 09:17:23

服務(wù)器整合

2018-09-04 13:30:33

華為云

2011-11-25 15:50:15

信息圖Android

2015-05-27 14:46:03

戴爾云計(jì)算

2023-10-19 08:30:58

線程源碼thread

2011-10-31 15:59:56

SQLiteiPhoneiOS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人黄色在线观看 | 国产高清视频在线 | 国产激情第一页 | 在线精品一区二区 | 成人毛片在线视频 | 国产精品久久久久久久久久久久午夜片 | 亚洲精品视频免费观看 | www.亚洲视频 | 狠狠的干 | 国产黄色电影 | 91视频播放 | 久久久久国产一区二区三区四区 | 日韩不卡视频在线观看 | 日韩视频免费看 | 午夜伊人 | 日韩成人免费视频 | 精久久久 | 一区二区三区视频在线观看 | 国产成人亚洲精品 | 91在线中文字幕 | 午夜电影在线播放 | 午夜影院在线观看 | 免费在线观看成人 | 巨大黑人极品videos精品 | 天天天久久久 | 国产在线永久免费 | 国产精品久久久久久久久久了 | 福利一区二区 | 日韩一区二区三区在线看 | www亚洲一区| 中国美女av | 久久久久国产精品 | 中文字幕综合 | 欧美1级 | 超碰在线人人 | 久草视频网站 | 日韩福利在线 | 日韩欧美在线播放 | 岛国av免费观看 | 在线免费观看黄a | 有码一区|