parts/6.63.ProtocolLockErrors-CGM.md

6.63 Protocol Lock Errors [CGM]

6.63.1 Applicability to language

The vulnerability as described in ISO/IEC 24772-1 clause 6.63 is applicable to C++. C++ provides some simple protocols to cover sharing and access to shared data, as well as

This subclause requires a complete rewrite to have it reflect C++ issues.

Difference between threads and tasks. Can threads and tasks coexist?

Possibly describe different mutexes and locks and how to safely use them.

Deadlock with single mutex,

No priorities within the standard language and libraries.

Synchronization: Mutexes Condition variables Semaphores Latches and Barriers Futures, promises and tasks (atomics) (see https://en.cppreference.com/w/cpp/thread)

Availability of C++ parallel algorithms (i.e. use!)

6.63.2 Avoidance mechanisms for language users

To avoid the vulnerability or mitigate its ill effects, C++ software developers can: