mardi 4 décembre 2018

lock gaurd - will it queue multiple request

I have a four member functions that can be called multiple times asynchronously from other piece of code - but since these functions are making use of its class member variables, I need to ensure that until one call execution is not over the second should not start but be in queue.

I have heard of lock guard feature in C++ that make a code block - in my case as automatic lock for a duration for a function :

void DoSomeWork()
{
    std::lock_guard<std::mutex> lg(m); // Lock will be held from here to end of function
--------;
return;
}

Since my four class methods do independent work should I have four mutex one for each lock guard for each member function. Will the async calls made be in some sort of queue if a lock guard is active?

I mean if there are say 10 calls made to that member method at same time - so once 1st call acquires the lock guard the remaining 9 call request will wait until lock is free and take up execution one by one?

Aucun commentaire:

Enregistrer un commentaire