簡體   English   中英

多核環境中的數據同步(基於Java)

[英]Synchronization of data in multiple-core environment (Java-based)

這是我的第一個問題,所以請對我保持溫柔。

當在不同的CPU內核上運行的兩個線程(例如t1和t2)在同一時間(即同一納秒/處理器周期)在共享對象上調用同步方法時,會發生什么情況? 如何以及通過架構的哪個元素來解析鎖?

這似乎是一個顯而易見的問題,但我在互聯網上找不到任何東西。 謝謝!

如今,這實際上是在硬件中實現的,因此處理器具有一條特殊的指令,可以從多個訪問中授予一個線程。 這是從上個世紀基於純軟件的解決方案演變而來的,如今,AtomicInteger代表的是當今最先進的技術:一個可變的整數,保證是線程安全的,但永遠不會阻塞。

示例: 英特爾Haswell架構

規范只是說同步方法一次只能由一個線程輸入。 使用哪種體系結構機制將取決於JVM。

對於Oracle HotSpot(幾乎每個人都運行的JVM):C ++代碼是GNU,可能為您找到了答案。

但是,如果您只需要保證它“有效”,那么該規范就會為您提供保證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM