так как предполагалось? мьютекс останется залоченным?
Поэтому лучше сделать крошечную функцию, которая сделает нужное изменение. И код будет чище.
Если непонятно что защищатся мьютексом, то надо сделать структуру, в которой будет сама переменная и мьютекс. Так все будет очевидно.
>defer там идеоматически. Вопрос, что будет, если функция завершится не так как предполагалось? мьютекс останется залоченным? В подходе Rust разблокировка мьютекса произойдёт при выходе MutexGuard-а из области видимости, причём вне зависимости от того, штатным образом или при раскрутке стека. Идея не нова, примерно такой же вариант мьютекса можно на C++ сделать. > Поэтому лучше сделать крошечную функцию, которая сделает нужное изменение. И код будет чище. И пихать её везде с defer-ом? Нет уж, спасибо. > Если непонятно что защищатся мьютексом, то надо сделать структуру, в которой будет сама переменная и мьютекс. Так все будет очевидно. В Rust защищаемая переменная и есть мьютекс. Куда уж проще?
Даёшь транзакции как в haskell. Через software transition machine
Обсуждают сегодня