Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Lock-Free Programming

Aperta
#14 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

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

enhancement good first issue help wanted

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, and PAUSE for spinlocks and synchronization.
    • Memory barriers: MFENCE, SFENCE, LFENCE.
    • Transactional memory primitives: XBEGIN / XEND (TSX).
  • On AArch64:
    • Load/store-exclusive: LDXR / STXR and atomic compare-and-swap (CAS).
    • Memory barriers: DMB, DSB, ISB.
    • Spinlock optimization: YIELD.

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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ashvardanian/less_slow.cpp

Tutte le issue di ashvardanian/less_slow.cpp

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.