亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為啥大面積變小面積了,為啥這里就不會有很大的性能開銷

原來是把a++這個操作同步起來

現在這個操作,好像也沒有簡化很多。

這個思路還是沒太明白。

正在回答

4 回答

鎖發生在寄存器里是很快的,鎖發生在內存里要看(如果發生在CPU的L1 cache上,就很快),如果發生在L2,L3或者內存里就慢很多;鎖如果發生在IO上(比如讀硬盤就非常慢)。所以縮小范圍,要看縮小了什么,如果縮小了I/O,那就非常有必要了。 我用Sleep(I/O),所謂I/O就是觸發中斷的東西,來替代真實的I/O場景(比如讀數據庫,讀redis等)。


寄存器速度約等于(l1),< l2, < l3? <<<<< 內存(這里大概有幾十倍到百倍速度差距了) <<<<<<? 固態硬盤(和內存間有百倍到千倍差距) <<<<<< 機械硬盤(和內存比大概有十萬到百萬倍差距)。。

0 回復 有任何疑惑可以回復我~

阿里大神的思考,值得學習

0 回復 有任何疑惑可以回復我~

原來的a是臨界資源,所有的線程都要去爭奪臨界資源,就會發生排隊。用了ThreadLocal之后每個線程都有一份線程本地資源,避免了多線程的排隊競爭

0 回復 有任何疑惑可以回復我~
#1

匪曰思存 提問者

HashSet的競爭跟a的競爭之間會差很多嗎
2020-03-17 回復 有任何疑惑可以回復我~

原先是只要有線程并發就排隊,現在是不同線程間通過ThreadLocal進行資源隔離,就無須排隊了,因為根本產生不了競爭,唯一的競爭就在那個共享的HashSet上,所以給add()操作同步一下就好了??s小了原來的同步范圍

2 回復 有任何疑惑可以回復我~
#1

匪曰思存 提問者

HashSet的競爭跟a的競爭之間會差很多嗎
2020-03-17 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為啥大面積變小面積了,為啥這里就不會有很大的性能開銷

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號