📅 2015-Jan-14 ⬩ ✍️ Ashwin Nanjappa ⬩ 🏷️ cpp, mutex ⬩ 📚 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