memory-model

    19熱度

    2回答

    python線程是否暴露Java的內存可見性和語句重新排序問題?由於我找不到任何對「Python內存模型」或類似內容的引用,儘管很多人都在編寫多線程Python代碼,但我猜這些內容並不存在。例如,易失性關鍵字。但似乎沒有明確說明,例如,一個線程中的變量變化對所有其他線程立即可見。 也許這東西是所有Python程序員很明顯的,但作爲一個可怕的Java程序員,我需要一點點額外的放心:)

    4熱度

    2回答

    讓我困惑的是這個。 HashEntry中的ConcurrentHashMap(jdk1.6.0_16) ...因爲值字段是易變的,不是終點,它是合法的WRT Java內存模型不同步的讀者看空 Java文檔而不是通過數據競賽讀取時的初始值。儘管導致這種情況的重新排序實際上不太可能發生,但Segment.readValueUnderLock方法可用作備份,以防在非同步訪問方法中看到空值(預初始化)。

    7熱度

    4回答

    確實const_cast只是一種告訴編譯器「停止呻吟,把它當作非const指針」的方法嗎?有沒有什麼情況下,const_cast本身被翻譯成實際的機器碼?

    2熱度

    2回答

    經過大量研究,我相信我很瞭解JMM,當然也足夠了解當兩個線程之間共享一個對象時,您必須在同一臺顯示器上同步所有訪問。我明白,如果多個活動線程同時訪問一個對象,那麼所有的投注都將關閉,他們會觀察什麼。但是,如果一個對象在使用它的某個其他線程開始之前(或者該線程甚至被構造)確定性地實際構造,那麼JMM是否保證由後面的線程看到的對象的內容是相同的如早期設置線程配置的那樣。 IOW,是否有可能在一個線程中

    41熱度

    1回答

    java內存模型規定編寫一個int是原子的:也就是說,如果您在一個線程中爲其寫入一個值(由4個字節組成)並在另一個線程中讀取它,您將得到所有字節或無,但從來沒有2個新的字節和2箇舊的字節等。 這不保證long。在此,將0x1122334455667788寫入一個變量,該變量保存0之前可能會導致另一個線程讀取0x112233440000000或0x0000000055667788。 現在規範沒有強制

    18熱度

    5回答

    在Java中互相排斥Peterson算法是否有示例實現?

    18熱度

    2回答

    我看過::std::thread和::std::forward等文章,但我沒有看到::std::atomic上沒有好文章。當然,有standards proposal paper,但我沒有看到任何人只是想使用該設施的文檔。 有沒有?我在哪裏可以找到它?

    2熱度

    2回答

    我是Java線程的新手,最近纔開始閱讀內存模型。從我對Java內存模型的理解中可以看出,編譯器可以進行優化。 這可能會使多線程代碼和同步變得複雜,但我的問題是爲了更簡單的事情。以這個例子爲例,因爲這兩個語句並不相互依賴,編譯器是否有可能改變try語句中代碼的排序並因此中斷檢查? boolean success = false; try{ MyClass.someFunction(); suc

    10熱度

    5回答

    在C和C++的變量可以被標記爲volatile,這意味着,編譯器不會優化它,因爲它可被修改外部聲明對象。在Delphi編程中有沒有相同的東西?如果不是關鍵字,也許是解決方法? 我的想法是使用絕對,但我不確定,這可能會引入其他副作用。