могу словить race condition и никакой компилятор даже не подумает пожаловаться? А зачем так сделали?
Рейскондишены могут случаться, их невозможно убрать
Рекомендую найти и прочитать книгу McNamara Tim. The Accelerated Guide to Smart Pointers in Rust все смарт поинтеры разжеваны ясно и с примерами.
вы не путаете race condition и data race? race condition - состояние гонки, когда от порядка выполнения потоков зависит поведение программы. от него компилятор не может защитить, mutex не защитят, это только проектирование вашей программы правильное должно быть data race - когда к одной ячейки памяти обращаются два потока, хотя бы один из них пишет, и эти действия не синхронизированы компилятор раста защищает от data race. и при Arc<Cell<T>> data race невозможен
Обсуждают сегодня