Locks

In this lesson, we will learn about different locks and their usage in embedded programming.

Locks are available in three different forms:

  1. std::lock_guard for simple use-cases

  2. std::unique-lock for advanced use-cases

  3. std::shared_lock is available with C++14 and can be used to implement reader-writer locks.

Locks need the header <mutex>.

RAII-Idiom (Resource Acquisition Is Initialization)

Locks take care of their resource following the RAII idiom. A lock automatically binds its mutex in the constructor and releases it in the destructor. This reduces the risk of a deadlock because the runtime handles the mutex.

If the lock goes out of scope, the resource will be immediately released.

std::lock_guard

First, the simple use-case:

Press + to interact
std::mutex m;
m.lock();
sharedVariable = getVar();
m.unlock();

The mutex m ...