Code Yarns ‍👨‍💻
Tech BlogPersonal Blog

How to use mutex in C++

📅 2015-Jan-14 ⬩ ✍️ Ashwin Nanjappa ⬩ 📚 Archive

Mutex is an entity that can be used to control concurrent access to an object by multiple threads. Usage is pretty simple: thread that accesses the object locks the mutex, reads or modifies the object and then unlocks the mutex.

The mutex class was introduced in C++11 and its usage is just as simple as mentioned above. Here is a simple example where we control concurrent access by threads to adding or removing items from a queue using mutex:

#include <mutex>
#include <queue>

std::queue<int> q; // Queue which multiple threads might add/remove from
std::mutex m; // Mutex to protect this queue

void AddToQueue(int i)
{
    m.lock();
    q.push(i);
    m.unlock();
}

int RemoveFromQueue()
{
    int i = -1;
    m.lock();
    if (!q.empty())
    {
        i = q.front();
        q.pop();
    }
    m.unlock();
    return i;
}

Tried with: Visual C++ 2013