В 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, взаимоисключение...
Так примерно - понятно?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости