AtomicLongArray.LazySet — Spurious Full Fence
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- csharp
- Ambito
- backend, performance
Direzione di ricerca
Start with Utilities/AtomicLongArray.cs and inspect LazySet and its use from ClearCounts. Replace the full-fence approach with the shown Volatile.Write form, then run the repository's existing test suite; done means the implementation no longer calls Interlocked.MemoryBarrier while the tests pass.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
File: Utilities/AtomicLongArray.cs
The LazySet implementation (used in ClearCounts) does a plain write then calls Interlocked.MemoryBarrier() — which emits a full fence, defeating the purpose of a lazy/relaxed write. The comment in the code even acknowledges uncertainty about this. On modern x86 this is largely harmless due to TSO, but on ARM64 (e.g. AWS Graviton, Apple Silicon) a full fence is expensive and wrong for this use case. The correct modern equivalent is:
Volatile.Write(ref _counts[index], value);
Volatile.Write emits a store-release fence (half-fence) rather than a full fence, which is precisely what Java's lazySet maps to on ARM64.
- Lingua principale
- C#
- Stelle
- 185
- Fork
- 31
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di HdrHistogram/HdrHistogram.NET
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
HdrHistogram/HdrHistogram.NET#167 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
HdrHistogram/HdrHistogram.NET#166 ·
-
WriterReaderPhaser.FlipPhase - Task.Yield().GetAwaiter().GetResult() is a Thread Pool Anti-PatternApertaagent enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
HdrHistogram/HdrHistogram.NET#144 ·
-
agent enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
HdrHistogram/HdrHistogram.NET#142 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
HdrHistogram/HdrHistogram.NET#156 ·
Tutte le issue di HdrHistogram/HdrHistogram.NET
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
question
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
代理地址输入框的示例提示容易被误认为已配置代理Forse già presa @jay23606 l’ha presa oggi. Apertabug
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
kookxiang/jellyfin-plugin-bangumi#297 ·
I maintainer di solito rispondono entro 1 giorno
-
A numeric literal is parsed in the host's culture, so 1.5 is 15 in a made EXE on a comma-decimal OSApertabug interpreter silently-wrong small
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno