Статья подготовлена для студентов курса «Разработчик С++» в образовательном проекте OTUS. Не секрет, что Lock-Free алгоритмы и структуры данных существенно усложняют проект. Это подтверждается как моим собственным опытом, так и Core Guidelines (набором рекомендаций и правил по написанию кода на С++). Следуя принципу Lock-Free, очень сложно реализовать код. Ещё сложнее его отладить и практически невозможно найти все баги, которые, как правило, всплывают только на проде. Почему возникают сложности? С моей точки зрения, технология до сих пор недостаточно изучена...
Статья подготовлена для студентов курса «Разработчик С++» в образовательном проекте OTUS. В одной из прошлых заметок мы приводили пример конкурентной обработки двух конфликтных запросов, которые возникли в связи с одновременным бронированием одного и того же номера двумя разными менеджерами отеля. Такая ситуация стала возможной из-за того, что бронирование номера не является атомарным по своей сути, не защищено от конкурентного доступа. Как правило, существует несколько путей решения. Блокировка Самое простое, на первый взгляд, решение...