Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build a multithreaded C++ program (e.g. a parallel data processor, a thread-pool job runner, or a producer/consumer pipeline). Use std::thread (or std::async/future), protect shared state with std::mutex held via std::lock_guard/std::unique_lock (or std::atomic for simple counters), and coordinate with condition variables/channels — with NO data races (which are undefined behavior). Manage memory with smart pointers, keep it exception-safe (RAII), build with CMake, and PROVE it is clean by running it under ThreadSanitizer and AddressSanitizer with no findings.
Shared state guarded by RAII locks/atomics; no data races; ThreadSanitizer reports clean; no deadlocks.
Smart pointers / RAII own all resources; AddressSanitizer clean (no leaks/use-after-free); exception-safe.
CMake build with sanitizer configs; ASan + TSan runs shown clean; optimized release build also produced.
Can explain why the locking/sharing design is race-free and where UB was avoided.
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# A concurrent C++ app, sanitized & built ## Goal Build a multithreaded C++ program (e.g. a parallel data processor, a thread-pool job runner, or a producer/consumer pipeline). Use std::thread (or std::async/future), protect shared state with std::mutex held via std::lock_guard/std::unique_lock (or std::atomic for simple counters), and coordinate with condition variables/channels — with NO data races (which are undefined behavior). Manage memory with smart pointers, keep it exception-safe (RAII), build with CMake, and PROVE it is clean by running it under ThreadSanitizer and AddressSanitizer with no findings. ## Acceptance criteria - [ ] Concurrency correctness: Shared state guarded by RAII locks/atomics; no data races; ThreadSanitizer reports clean; no deadlocks. - [ ] Memory & exception safety: Smart pointers / RAII own all resources; AddressSanitizer clean (no leaks/use-after-free); exception-safe. - [ ] Build & sanitizers: CMake build with sanitizer configs; ASan + TSan runs shown clean; optimized release build also produced. - [ ] Reasoning: Can explain why the locking/sharing design is race-free and where UB was avoided. ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.