transactional-memory

    2熱度

    1回答

    我一直在尋找如何事務內存在Haskell中實現,我不知道我知道如何暴露給程序員勾成C語言編寫的運行系統功能的STM操作中的ghc/libraries/base/GHC/Conc/Sync.hs混帳回購協議,我看到了如下定義: -- |A monad supporting atomic memory transactions. newtype STM a = STM (State# RealWor

    1熱度

    3回答

    我目前正試圖圍繞使用C++ STL容器的線程安全問題來解決我的問題。我最近試圖通過使用std :: mutex作爲成員變量來實現一個線程安全的std :: vector,然後才意識到雖然我可以通過鎖定鎖使成員函數成爲線程安全的,但我無法使lib函數像std :: sort線程安全,因爲它們只能得到begin()/ end()迭代器,這是STL中容器和算法之間基本分離的結果。 那麼我想,如果我不能使

    1熱度

    1回答

    只需在我的某個類中聲明所有函數爲transaction_safe就足夠了,因此它可以用於來自Experimental Transactional Memory TS的事務atomic_noexcept, atomic_cancel, atomic_commit中的線程安全?如已知在實驗C++標準庫中有事務存儲器TS(ISO/IEC TS 19841:2015)。簡單的例子在此處:http://en

    3熱度

    1回答

    已知有事務存儲器TS(ISO/IEC TS 19841:2015)在實驗C++:聲明爲transaction_safeIs it enough to declare a function as transaction_safe, so they can be used thread-safe? 而且operator[]僅對容器:std::vector,std::unordered_map,std:

    1熱度

    1回答

    cppreference網站有一個(work in progress) page describing transactional memory c++ code。這是頁 #include <iostream> #include <vector> #include <thread> int f() { static int i = 0; synchronized { /

    4熱度

    1回答

    我目前正在研究Haskell中的一些事務內存基準,並希望能夠在事務中使用隨機數。我目前使用here的Random monad/monad變壓器。在下面的例子,我有一個包含整數TVars的陣列和陣列遞增中隨機選擇10個tvars事務,如: tvars :: STM (TArray Int Int) tvars = newArray (0, numTVars) 0 write :: Int ->

    0熱度

    1回答

    作爲對JVM STM框架的一些分析的一部分,我正在考慮重新設計一個開源庫的鎖定機制來代替使用STM。 然後,我會運行一些測試來比較性能,易於編碼等。 顯然,性能測試將不得不支持STM的樂觀鎖定,但可以計算出後面的語義。 但是,現在,我只是對開放源碼庫候選人感興趣。想到的是EhCache,因爲它具有內部鎖定措施。 還有什麼可能是合適的候選人?

    1熱度

    1回答

    C++ 17的事務內存建議的當前狀態是什麼。它是否會被納入標準,目的是被納入未來版本的標準C++中,還是隻是一個實驗性的概念驗證特徵,其標準化狀態仍未確定? 我在問,因爲一些標準化委員會的文件似乎在這裏給出了矛盾的交流。一方面,我們有P0265R0(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0265r0.pdf)表示事務性內存

    15熱度

    2回答

    有一個新的實驗功能(可能是C++ 20),它是「同步塊」。該塊提供了一段代碼的全局鎖定。以下是cppreference的示例。 #include <iostream> #include <vector> #include <thread> int f() { static int i = 0; synchronized { std::cout << i <<

    2熱度

    1回答

    通過GCC文檔:x86-transactional-memory-intrinsics.html,當交易失敗/中止,_xbegin()應返回中止狀態。但是,我發現它有時會返回0。而且頻率非常高。 ** _ xbegin()**會返回0的是什麼樣的情況? 查看手冊後,我發現很多情況可能會導致這種結果。例如,CPUID,SYSTEMCALL,CFLUSH.etc。但是,我不認爲我的代碼觸發了其中的任何