2016-08-19 73 views
1

C++ 17的事務內存建議的當前狀態是什麼。它是否會被納入標準,目的是被納入未來版本的標準C++中,還是隻是一個實驗性的概念驗證特徵,其標準化狀態仍未確定?標準C++事務內存狀態

我在問,因爲一些標準化委員會的文件似乎在這裏給出了矛盾的交流。一方面,我們有P0265R0(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0265r0.pdf)表示事務性內存不會標準化,另一方面,Stroustrup有一個N4492紙(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4492.pdf),事務性內存列在C++ 17功能列表中。

回答

3

很快:事務內存TS已經發布,第二個版本正在開發中。但是,委員會並不打算將其納入近似特徵的標準中。這種選擇有幾個原因:

  • 沒有足夠的實施經驗。自GCC6以來,只有g ++實現它。 TSs的目標部分是收集實現和用戶體驗,所以這樣一個大的特點仍然「不成熟」。

  • 並不是每個目標都支持事務內存,並且它的執行成本很高,而並非每個人都需要它。由於這些原因,委員會顯然不確定TS是否應該成爲主要C++標準的一部分。它可能永遠生活在一個TS中。此外,並不是每個人都相信事務內存TS的每個特性都值得包含在主C++標準中。有些人發現​​是主要特徵,而另一些人則認爲原子塊是真正的遊戲改變者。 TS 增加了圖書館實施者必須處理的另一認知開銷(以及幾個新關鍵詞,這通常不被視爲好事)。

+0

很好的答案。可惜的是,它是唯一可以組合的技術,AFAICT。基本上,併發編程與15年前相似,一切都需要從頭編碼(再次,因爲沒有可組合的東西,所以沒有可重用的構建塊)。 –

+0

@AmiTavory什麼是事務更可組合的東西,爲什麼? –

+1

@JanusTroelsen假設您發現某個項目使用互斥鎖或無鎖基元顯示了一個散列表的超酷併發算法。然後你會發現鏈接列表相同。然後你想使用一個哈希表和一個鏈表來構建一個LRU緩存。 AFAIU,這些解決方案的組合,並不是問題組合的解決方案(哈希表和列表併發是不夠的,LRU狀態可能不一致)。但是,使用TSM哈希表和鏈接列表可以簡單地構建TSM LRU。 –