Коллега написал менеджер транзакций. На code review всё выглядит норм — но остаётся ощущение, что тут есть баги 😸
class TransactionContext {
static TransactionContext* current;
std::vector<std::function<void()>> rollbacks;
public:
static TransactionContext& get() {
return *current;
}
void addRollback(std::function<void()> fn) {
rollbacks.push_back(fn);
}
TransactionContext() { current = this; }
~TransactionContext() {
for (auto& rb : rollbacks) rb();
current = nullptr;
}
};🎯 Задание: Найди минимум 3 проблемы в этом коде.
🙂 Подумай: thread safety, исключения в деструкторах, вложенные транзакции.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик