В C++ существет такое понятие, как мьютексы. Кто может объяснить мне, зачем они нужны?
Ну вот, представьте ситуацию - вы с женой одновременно кладете на свой семейный счет деньги. Примерно так:
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, взаимоисключение...
Так примерно - понятно?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем доброго, недавно начал рассматривать варианты использования с++ аддонов из electron js и не особо нашел что хотелДело в том что стандартный...
У меня скорее вопрос чем проблемаMalloc не выводит ошибки если я пытаюсь выделить 8gb памяти, но на ноутбуке ее всего 6gb
Недавно перешел на ubuntu и возникла проблема с работой библиотек "iostreamh" и "conio
Перевожу тут man руководство и вот что пока что интересно