Lock-Free Programming
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 18/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- cpp
- Ambito
- operating-systems, performance
Direzione di ricerca
L’issue non indica alcun file del repository, test o punto di ingresso dell’implementazione. Inizia profilando la contesa della memoria sui sistemi NUMA e studiando le istruzioni di sincronizzazione x86 e AArch64 elencate; per completarla sarebbe necessario definire una primitiva di concorrenza o produrre un risultato di ricerca corredato da misurazioni di supporto, cosa che l’issue non specifica ancora.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Most C++ developers have heard of std::mutex and std::shared_mutex, and some may have implemented their oversimplified versions using std::atomic. However, there have been few attempts to design a scalable shared mutex that works efficiently on modern 100+ core NUMA systems.
To understand the foundational problems causing these limitations, one should study memory contention and profile how the system behaves when many threads attempt to read or modify the same memory address. Before attempting to design high-level STL-like abstractions, one should understand how some key instructions operate:
- On x86:
LOCK XADD,LOCK CMPXCHG, andPAUSEfor spinlocks and synchronization.- Memory barriers:
MFENCE,SFENCE,LFENCE. - Transactional memory primitives:
XBEGIN/XEND (TSX).
- On AArch64:
- Load/store-exclusive:
LDXR/STXRand atomic compare-and-swap (CAS). - Memory barriers:
DMB,DSB,ISB. - Spinlock optimization:
YIELD.
- Load/store-exclusive:
Once the low-level profiling is complete, the next step could be to explore implementations of advanced concurrency primitives proposed in the Concurrency TS, like the Distributed Counters in P0261 or Byte-wise atomic memcpy in P1478.
This topic could also serve as the foundation for a research paper on concurrency primitives, especially for those pursuing a master’s or PhD in Systems Programming.
- Lingua principale
- C++
- Stelle
- 1.9k
- Fork
- 85
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
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 ashvardanian/less_slow.cpp
-
enhancement good first issue
Difficoltà 5/5 Più di una settimana Idoneità per principianti 10/100
-
Add cuGraph examplesForse di nuovo libera @syedshazli l’ha presa 622 giorni fa e non c’è nessuna pull request aperta. Apertaenhancement good first issue help wanted
ashvardanian/less_slow.cpp#32 · 10 commenti · 1 assegnatario ·
-
Encrypted Enclaves ExamplesApertaenhancement good first issue help wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
enhancement good first issue help wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
enhancement help wanted invalid
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
Tutte le issue di ashvardanian/less_slow.cpp
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
espressif/esp-matter#1913 ·
-
bug priority: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
chipsalliance/verible#2644 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
grafana/pyroscope-dotnet#470 ·
I maintainer di solito rispondono entro 1 giorno
-
documentation P5 XS
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
open-astro/AlpacaBridge#1848 ·
I maintainer di solito rispondono entro 1 giorno