Rechercher

PythonReactSEOPDF
GitHub Skill

m07-concurrency

Mastering C++ Concurrency. Triggers: std::thread, jthread, atomic, mutex, deadlock, race condition, memory model, coroutine, async.

13eholder☆ 10 Étoiles du dépôt1 Forks du dépôt

Installation

Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.

Voir la source ↗Guides

Instructions

C++ Concurrency

Core Question

How do threads communicate?

  • Shared State: Mutexes (std::mutex) or Atomics (std::atomic).
  • Coordination: Condition Variables (std::condition_variable) or Latches/Semaphores (C++20).
  • Tasks: std::async or Coroutines (C++20).

Error → Design Question

Issue Design Question
Data Race Are two threads accessing memory without a Happens-Before edge?
Deadlock Did you lock Mutex A then B, while another thread locked B then A?
False Sharing Are independent atomics sitting on the same cache line?
Live Lock Are threads spinning without progress?

Thinking Prompt

  1. Do I need a thread?

    • Short task? → std::async or Thread Pool.
    • Long background? → std::jthread.
  2. Is it shared state?

    • Yes? → Protect with std::mutex.
    • Is it small/primitive? → std::atomic.
  3. Locks or Atomics?

    • Logic requiring multiple steps? → Mutex (Atomic is only for single instructions).
    • Simple flag/counter? → Atomic.

Trace Up / Down

  • Trace Up:
    • Issue: "Random update values in counter."
    • Cause: counter++ is Read-Modify-Write, not atomic. Data race.
    • Fix: std::atomic<int>.

Quick Reference

Tool C++ Version Use When
std::jthread C++20 Standard thread (auto-join).
std::atomic C++11 Lock-free counters/flags.
std::mutex C++11 Locking critical sections.
std::shared_mutex C++17 Read-heavy workloads.
std::latch C++20 Waiting for N tasks to start.
co_await C++20 Async I/O (requires library).

Exemples

Consultez les exemples du dépôt source.

Voir la source ↗

Historique source

Date d’indexation
2026-03-11
Mise à jour de l’index
2026-03-11
Branch
main

Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!