Для чего нужны мьютексы в C++

173
01 ноября 2018, 10:40

В C++ существет такое понятие, как мьютексы. Кто может объяснить мне, зачем они нужны?

Answer 1

Ну вот, представьте ситуацию - вы с женой одновременно кладете на свой семейный счет деньги. Примерно так:

int sum = howManyMoney();
sum += 10000;
MoneyToAccount(sum);

И то же одновременно делает жена - и вот как это у вас получается:

int sum = howManyMoney();
                             int sum = howManyMoney();
sum += 20000;
                             sum += 10000;
MoneyToAccount(sum);
                             MoneyToAccount(sum);

И что получится? Получится, что в банке стало всего на 10000 больше, а не на 30000. Плохо? Понятно, что для банка хорошо :), но для вас...

А вот если каждый код начинается с захвата мьютекса, и заканчивается его освобождением, то в силу гарантии атомарности захвата и невозможности одновременно владеть мьютексом нескольким потокам, какой-то поток захватит его первым, и положит свои деньги - второй же будет вынужден ждать. Только потом второй займется своими делами - которые опять же никто не сможет перебить.

Т.е. такой код может выполнять только один поток одновременно.

Потому юн и мьютекс - mutex, mutual exclusion, взаимоисключение...

Так примерно - понятно?

READ ALSO
Electronjs вызов функций из c++ модуля

Electronjs вызов функций из c++ модуля

Всем доброго, недавно начал рассматривать варианты использования с++ аддонов из electron js и не особо нашел что хотелДело в том что стандартный...

194
Malloc большого количества данных в си

Malloc большого количества данных в си

У меня скорее вопрос чем проблемаMalloc не выводит ошибки если я пытаюсь выделить 8gb памяти, но на ноутбуке ее всего 6gb

176
Проблема с работой библиотеки <iostream.h> и <conio.h>

Проблема с работой библиотеки <iostream.h> и <conio.h>

Недавно перешел на ubuntu и возникла проблема с работой библиотек "iostreamh" и "conio

174
Для чего увеличивать размеры буферов в tcp?

Для чего увеличивать размеры буферов в tcp?

Перевожу тут man руководство и вот что пока что интересно

182