2021-03-06:go中,公共變數是協程安全嗎?賦值操作是原子的嗎?為什么?
福哥答案2021-03-06:
這是面試中被問到的,實力有限,真正的答案還不知道,我的想法是a=1是原子操作,a=b不是原子操作,實際開發中,不大可能是a=1這種情況,可以說是協程不安全,
答案1:
不是協程安全的,
賦值非原子操作,
需要加鎖要么就做原子操作,
否則會引起data race,
評論如下:
題016_
卓熊 7:39:15
Go很多操作并沒有做太多處理,還是沿用了c,所以公共變數非協程安全,賦值操作是否原子跟變數型別及機器架構有關(指令集),
直接來我家-勤心 10:54:22
正常上班
題000_leetcode討論群
刷題菜雞 9:50:47
Io密集型調大并發數不會提升太高性能
刷題菜雞 9:50:56
因為都在等…
陌兮 9:55:19
這時候公用buffer,適量減少執行緒切換才正確
成都-似杏而酢 14:49:42
暴力列舉咯
成都-似杏而酢 14:49:53
這才多少點多少邊嘛
葡萄?檸檬 16:06:34
適量調大是有用的
葡萄?檸檬 16:06:47
為什么io密集型,執行緒數是2倍呢?
你撤回了一條訊息
葡萄?檸檬 16:07:18
如果沒用,那就應該是cpu核心數
葡萄?檸檬 16:07:31
只是不能調得太大
成都-似杏而酢 16:21:55
SSD 的并發不挺好呢么
1711680493.github.io 16:28:09
今天的每日一題是我過的最快的一次
題078_
Tnze 10:27:04
公共變數不是協程安全的,賦值操作不是原子的
Tnze 10:27:45
這是由于線代多核cpu中變數可能會儲存在不同核心各自的cache上
Tnze 10:29:05
需要原子操作一定要用sync包
題029_
【新手】SQL雙活負載均衡集群 7:48:53
2倍就是一個估計而已,2.5倍,1.8倍,甚至3倍,效果都一樣
【資深】葡萄?檸檬 8:02:30
所以有用啊
【資深】葡萄?檸檬 8:02:43
go中默認只是cpu的核心數
【資深】葡萄?檸檬 8:02:53
也就是說,可以調大
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/267056.html
標籤:其他
