Pull to refresh

Comments 8

Из вики:

A transaction may also abort at any time, causing all of its prior changes to be rolled back or undone. If a transaction cannot be committed due to conflicting changes, it is typically aborted and re-executed from the beginning until it succeeds.


Таким образом если функция имела побочный эффект, то полезут трудноуловимые баги.

Опять вики:

STM is very optimistic: a thread completes modifications to shared memory without regard for what other threads might be doing, recording every read and write that it is performing in a log.


Хотел бы почитать подробнее про этот лог. В идеале они должны были изменить VM для этого.

P.S. Восхитительная статья про STM: Beautiful concurency (осторожно, haskell).
оффтоп: спасибо большое за ссылку, книга великолепна
> Таким образом если функция имела побочный эффект, то полезут трудноуловимые баги
Ну да, там так и написано: However, notice that it is crucial that act contains no effects other than reads and writes on TVars
Где там?
Если в Beautiful concurency, то там это гарантирует система типов.
это она в хаскелле гарантирует
а речь про STM вообще
>> хотя его использование в общем случае медленнее использования механизма блокировок

Ждем сравнительных тестов производительности.
Блин, а в Rock это должно было быть сделано на аппаратном уровне :((( Моя плакатъ
Sign up to leave a comment.

Articles