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