2014-06-14 145 views
1

我們是否需要任何同步,如果多個線程訪問multiset equal_range線程安全嗎?

pair<iterator,iterator> equal_range (const value_type& val) const; 

由於equal_range是讀操作,也可能不需要。請給出意見。

+1

@JerryYYRain請不要做無意義的編輯。更糟糕的是這些東西實際上被** 3 **人批准。 – Praetorian

+0

@Praetorian似乎他們保持編輯布朗尼點,即使編輯回滾。 – juanchopanza

+0

@ user2586432你是指'pair equal_range(const value_type&val)const;'? – juanchopanza

回答

2

就像你說的,因爲你只是「讀取數據」你不需要任何同步,你可以期望的功能是「線程安全」,看到這個question,其中公認的答案狀態:

[17.6.5.9/3] C++標準庫函數不應直接或間接修改當前線程以外的線程可訪問的對象(1.10),除非直接或間接訪問對象 通過函數的非常量參數,包括這個。

+0

咦?從什麼時候「只讀數據」意味着線程安全? Const不保證事情不會在內部發生變化。例如,它可以在內部緩存一個值。 – tenfour

+0

@tenfour你在一般情況下是正確的,但不是在這個問題的背景下。 const實際上保證事情不會在標準庫的情況下內部更改:http://stackoverflow.com/questions/14127379/does-const-mean-thread-safe-in-c11/14127380#14127380 –

+1

非常有趣!我不知道這個。 – tenfour