Какие алгоритмы используются в Clojure, Haskell (и других языках) для STM?

StackOverflow https://stackoverflow.com/questions/4292866

Вопрос

Насколько я понимаю, существует несколько различных алгоритмов для реализации программной транзакционной памяти (и это довольно активная область исследований).Где я могу найти (без необходимости погружаться в исходный код), которые используются на разных языках и библиотеках, особенно в Clojure и Haskell (GHC)?

Это было полезно?

Решение

Окончательный ресурс на STM Clojure - кроме самого кода - это Программное обеспечение транзакционной памяти Статья Марка Волкмана.

Он представляет краткий обзор высокого уровня СТМ-подхода (по сравнению с другими подходами к параллелизму) суммирует различные функции параллелизма, доступные в Clojure, а затем погружают в STM Clojure, описывая именно то, что происходит во время транзакции и в конечном итоге идет прямо вниз на уровень индивидуальных классов. В дополнение к предложению множества жесткой информации о внутренней разработке машин STM Clojure, он содержит хорошее количество очень проницательных замечаний, связанных с ориентированными на одновременности Clojure, поскольку они используются в идиоматических программах Clojure.

Фактическая точка входа на ресурсы STM Mark эта страница, В настоящее время с участием некоторых слайдов STM в дополнение к ссылке на последнюю версию главной статьи STM.

Другие советы

На очень высоком уровне, одна вещь, которая интересна в реализации STM Clojure, заключается в том, что она очень сильно отличается от всех других реализаций.Рич гораздо больше внимания уделял реальным высокопроизводительным базам данных, чем академическим работам о гипотетических STM.Например, STM от Clojure, насколько мне известно, является единственным STM, который использует управление параллелизмом нескольких версий (MVCC), что является хорошо известной техникой в мире баз данных (на самом деле, практически нет серьезной базы данных, которая не делает используйте MVCC), но в мире STM это практически вообще не обсуждается.

Видеть http://www.haskell.org/haskellwiki/software_transactional_memory. для Haskell (и GHC) и http://clojure.org/concurrent_programming. для Clojure.

Я считаю, что GHC поставляется с библиотекой STM, и в Clojure есть некоторые методы STM.

Для других языков см. http://en.wikipedia.org/wiki/software_transactional_memory#imlementations.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top