cost 182 ms
與 ConcurrentHashMap's.compute() 同步是否保證可見性?

[英]Does synchronisation with ConcurrentHashMap's .compute() guarantee visibility?

在ConcurrentHashMap.compute()中,我遞增和遞減位於共享 memory 中的一些 long 值。 讀取、遞增/遞減僅在同一鍵的compute方法中執行。 因此,通過鎖定 ConcurrentHashMap 段來同步對 long 值的訪問,因此遞增/遞減是原子的。 我的問題是 ...

哪個 ARM memory 屏障保證兩個線程之一將觀察另一個線程寫的內容?

[英]Which ARM memory barrier guarantees that one of two threads will observe what the other thread wrote?

線程 A 和 B 正在同時執行。 哪些 ARMv8-A memory 屏障類型(如 DMB、DSB)足以滿足后置條件,為什么? 我查看了ARMv8-A Architecture Reference Manual memory model DMB 和 DSB 的定義,但無法推斷出為什么即使使用 DS ...

原子操作傳播/可見性(原子負載與原子 RMW 負載)

[英]Atomic operation propagation/visibility (atomic load vs atomic RMW load)

語境 我正在用 C++ 編寫一個線程安全的原型線程/協程庫,並且我正在使用原子來使任務切換無鎖。 我希望它盡可能高效。 我對原子和無鎖編程有一個大致的了解,但我沒有足夠的專業知識來優化我的代碼。 我做了很多研究,但很難找到我的具體問題的答案:不同內存順序下不同原子操作的傳播延遲/可見性是多少? 當 ...

Java ConcurrentHashMap.computeIfPresent值修改可見性

[英]Java ConcurrentHashMap.computeIfPresent value modification visibility

假設我有一個帶有集合的並發映射值: 我更新了如下值: 我知道computeIfPresent整個方法調用是以原子方式執行的。 但是,考慮到這個映射是由多個線程同時訪問的,我有點擔心對底層集合所做的修改的數據可見性。 在這種情況下,在調用map.get之后,將在列表中看到值5 ...

如果線程 B 希望看到線程 A 所做的更改,是否只能更改最后一個變量而不是所有變量?

[英]If Thread B wishes to see changes Thread A makes, can only the last change be to a volatile variable as opposed to all?

我看過這個答案,它說明了如何: 在新的內存模型下,當線程 A 寫入易失性變量 V,而線程 B 從 V 讀取時,在寫入 V 時 A 可見的任何變量值現在都保證對 B 可見。 因此,舉個例子: 盡管value的非易失性(僅read ),是否保證對value的更改(從 -1 到 1)對線程 ...

java匿名內部類實現Runnable和共享外部類對象是否是線程安全的?

[英]Is it thread safe that java anonymous inner-class implements Runnable and shared outer-class object?

如圖所示,創建線程共享主線程狀態對象。我認為它不是線程安全的,由於cpu緩存,主線程和創建線程加載狀態對象到自己的緩存,當創建時 - 線程調用'setStatus'方法它只更新其緩存數據,主線程現在無法看到更新的數據。 所以它需要同步。 我理解正確嗎? ...

原子變量是否保證內存可見性?

[英]Does atomic variables guarantee memory visibility?

關於內存可見性的小問題。 CodeSample1: 此代碼在多線程環境中容易出錯,首先是因為“if-then-act”不是原子的,其次是因為潛在的內存可見性問題,例如threadA將字段設置為true,但是threadB是后來希望讀取該字段的值可能看不到,仍然看到值false。 ...

易失性引用是否真的保證對象的內部狀態對其他線程可見?

[英]Does a volatile reference really guarantee that the inner state of the object is visible to other threads?

在閱讀“實踐中的Java並發性”時,我遇到了以下問題- 為了安全地發布對象,必須同時使對該對象的引用和該對象的狀態對其他線程可見。 可以通過以下方式安全地發布正確構造的對象: 從靜態初始化程序初始化對象引用; 將對它的引用存儲到volatile字段或AtomicRefe ...

可見性保證

[英]Visibility Guarantee

我已經閱讀了JCIP 第16.3節“初始化安全性”的一些解釋,但仍然不清楚。 該部分指出 “此外,任何可以通過正確構造的對象的最終字段(例如最終數組的元素或最終字段引用的HashMap的內容)到達的變量也可以保證對其他線程可見。” 所以,如果我有以下可變對象: 然后, 線程 ...

需要揮發性嗎?

[英]Is volatile needed?

如果我有一個字節隊列,它應該有一個線程生成器,另一個消費者: 這種類型的隊列不需要同步。 readIdx僅由讀者線程修改, writeIdx只由作者線程組成。 readIdx == writeIdx意味着,沒有內容。 並且隊列只能占用buf.length-1字節的數據。 ...

Java並發集合和可見性

[英]Java Concurrent Collections and visiblity

對於並發集合(例如ConcurrentMap)在集合中數據的可見性方面,我有些不確定。 答:Thread1放置了一個復雜的對象,而Thread2獲取了它。 所有屬性在Thread2中都可見嗎? B:Thread1放置了一個復雜的對象,后來又更改了一些屬性。 然后Thread2得到 ...

BackgroundWorker是否保證對主線程可見在后台線程上進行的內存更改?

[英]Does BackgroundWorker guarantee that memory changes made on the background thread become visible to the main thread?

如果我使用BackgroundWorker修改應用程序中的數據結構,是否可以保證BackgroundWorker完成時(例如,在RunWorkerCompleted事件處理程序中)對主(UI)線程可見的后台線程更改? 對於加分:如果是,保證這一點的機制是什么? ...

使用volatile來確保Java中共享(但不是並發)數據的可見性

[英]Using volatile to ensure visibility of shared (but not concurrent) data in Java

我正在嘗試實現LZ77的快速版本,我有一個問題要問你關於並發編程的問題。 現在我有一個final byte[] buffer和一個final int[] resultHolder ,它們都有相同的長度。 該計划執行以下操作: 主線程寫入所有緩沖區,然后通知線程並等待它們完成。 ...

並發C ++程序的可見性

[英]Visibility in concurrent C++ programs

我知道在Java中,當從另一個線程訪問成員時,不能保證成員的可見性。 意思是訪問線程可能會看到成員的竊取值(因為緩存尚未刷新到主內存)。 我想知道C ++的情況是否也是如此? (也在C ++ 11中?) 如果是這樣,你如何在C ++中解決這個問題? (在Java中,您可以使 ...

如果只有一個CPU核心,每個線程的內存可見性問題是否存在?

[英]Are memory visibility problems per thread also there if there is just one CPU core?

標題可能看起來很奇怪,所以讓我解釋一下。 教導競爭條件的人通常會說thread1可以看到x == 0而線程2已經看到x=1; 我的問題是關於在同一核心上安排的線程(不是不現實的,仍然有一個核心嵌入式系統,並且至少在理論上你可以將線程綁定到核心): 即使thread1和thread2在 ...

盡管沒有代碼明確地將未初始化的對象泄漏到另一個線程?

[英]Uninitialized object leaked to another thread despite no code explicitly leaking it?

讓我們看一下這個簡單的Java程序: 主螺紋 主線程創建一個x設置為1的B實例,然后將該實例寫入靜態字段Ab 。 它會永遠重復此操作。 輪詢線程 生成的線程將進行輪詢,直到發現Abx不是1。 ?!? 它有一半的時間像預期的那樣進入了無限循環,但是有一半的時 ...

為什么這個Java程序會終止,盡管顯然它不應該(並沒有)?

[英]Why does this Java program terminate despite that apparently it shouldn't (and didn't)?

今天我實驗室的敏感操作完全錯了。 電子顯微鏡上的執行器越過它的邊界,在一系列事件之后,我損失了1200萬美元的設備。 我已將故障模塊中的40K以上線路縮小到: 我得到的一些輸出樣本: 由於這里沒有任何浮點運算,並且我們都知道有符號整數在Java溢出時表現良好,我認為這段代碼沒 ...


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