boost unordered map 和std unordered map 支援併發讀嗎?

時間 2021-05-05 21:41:50

1樓:雨花

.find()是沒問題的,但不要用 運算子,這個可能產生意料之外的寫操作。

曾經我乙個程式莫名卡死,懷疑是 運算子引用存在的 key 仍然引起了寫操作,沒有切實證據,但把 全部改成 .find() 之後就好了。

2樓:

得,2013 年的問題,乙個靠譜的肯定的回答都沒有,要麼就是在盲猜,要麼就是不負責任地胡說八道!

首先,C++11 前,C++語核沒有執行緒的概念,所以標準沒有規定容器的執行緒安全性。

C++11 起,對容器的執行緒讀寫安全性規定如下:

容器執行緒安全

根據條款 2,const 成員函式一定是執行緒安全的;由條款 4,迭代器操作對容器也僅有唯讀操作。

至於乙個常見的坑有老哥已經談到了,就是 map 的 [ ] 運算是有可能修改容器的,不是純的唯讀操作。

3樓:

不支援,

但是ConcurrentHashMap 支援,可以參考這個設計重新實現。hashmap本身資料結構支援多執行緒併發基礎,map不支援。

4樓:

我覺得應該是要支援併發讀的,但是我現在正在寫多執行緒程式,unordered_map初始化好了之後,後面只有多執行緒併發讀的操作,沒有寫,但是程式總是跑很長時間卡死或者捕捉到在unordered_map的find函式裡出錯了。

經過驗證,應該是支援的。

我當時用的是巢狀的map,類似:unordered_map> map ; 後面雖然我只有併發find,但是因為我訪問了map[x].find(), x是之前未插入的元素,導致map的長度+1,直到觸發rehash改變了內部結構,從而指標越界或者死迴圈。

如何評價川普支持者人肉希拉莉支持者並鼓勵騷擾對方?

不動的大電視機 公布的是他的id,還是他的真名?還是他的address?貴白左不是一直主張川普粉都是底層嗎?微博賬號屬於公共領域,說誰誰是誰誰完全沒什麼大問題。大問題是牽扯到了現實的address,zipcode,phone,name。然而有人這麼幹了嗎? 這種行為low到爆 雖然川普是選舉掛人罵街...

微軟是否有可能恢復XP支援,並放棄Windows 7 8 8 1 10等系統?

已登出 XP就算了吧,宕機坑過我無數次了,8.1永不為奴!除了8.1和7其他windows基本沒必要支援了,DX12下放到8.1和7上,渣渣10可以退役了。再做乙個應用商店更完善的win8.1 UP4 5 6,足夠了。 侯小柒的終末路 我不知道Windows 7 Windows 10到底反了什麼樣的...

在學習和努力的過程中是哪些激勵並支援著你?

初夏 在努力奔跑的過程中,總有一些磕磕絆絆阻礙著你,可是也總有一些事物讓你認為努力奔跑是值得的,哪怕前路是深淵 所謂深淵,下去也便是前程萬里.在少年時代,每個人都應該有屬於自己的 英雄 吧,或是明星,或是醫生,或是暗戀的人,他們都如此的優秀,而你又怎能墮落呢?這或許就是支援著你的動力吧。少年時代的喜...