У меня есть четыре функции-члена, которые можно вызывать несколько раз асинхронно из другого фрагмента кода - но поскольку эти функции используют свои переменные-члены класса, я должен убедиться, что до тех пор, пока одно выполнение вызова не закончится, второй долженне запускаться, но находиться в очереди.
Я слышал о функции защиты от блокировки в C ++, которая создает блок кода - в моем случае как автоматическая блокировка на время для функции:
void DoSomeWork()
{
std::lock_guard<std::mutex> lg(m); // Lock will be held from here to end of function
--------;
return;
}
Поскольку мои четыре метода класса выполняют независимую работу, я должен иметь четыре мьютекса по одному для каждой блокировки блокировки для каждой функции-члена.Будут ли асинхронные вызовы находиться в какой-то очереди, если защита блокировки активна?
Я имею в виду, если, скажем, 10 вызовов этого метода-члена сделаны одновременно - поэтому, как только 1-й вызов получит защиту блокировки,Оставшиеся 9 запросов на вызов подождут, пока блокировка освободится, и начнут выполнение по одному?