Реальный опыт Используя программное обеспечение транзакционная память? [закрытый]

3 ответа

Я участвовал в разработке человека, увлеченного своим хобби, клиента БитТоррента в Haskell (названный, колдуют). Это использует STM вполне в большой степени для координирования различных потоков (1 на одноранговый узел + 1 для управления хранением + 1 для полного управления).

Преимущества: меньше блокировок, читаемый код.

Скорость не была проблемой, по крайней мере, не из-за использования STM.

Hope это помогает

31
ответ дан ADEpt 24 November 2019 в 17:47
поделиться

Статье "Software Transactional Memory: why is it only a research toy?" не удается посмотреть на реализацию Haskell, которая является действительно большим пропуском. Проблема для STM, как статья указывает, состоит в том, что реализации должны, выбрал между любым созданием всех переменных доступов, транзакционных, если компилятор не может доказать их безопасный (который уничтожает производительность), или разрешение программисту указать, которые должны быть транзакционными (который уничтожает простоту и надежность). Однако реализация Haskell использует чистоту Haskell для предотвращения потребности сделать большую часть переменного использования транзакционной, в то время как система типов предоставляет простую модель вместе с эффективным осуществлением для транзакционных операций мутации. Таким образом программа Haskell может использовать STM для тех переменных, которые действительно совместно используются потоками при гарантии, что нетранзакционного использования памяти обеспечивают безопасность.

28
ответ дан David Tonhofer 24 November 2019 в 17:47
поделиться

Мы довольно часто используем его для приложений с высоким уровнем параллелизма в Galois (в Haskell). Он работает, широко используется в мире Haskell и не блокируется (хотя, конечно, у вас может быть слишком много споров). Иногда мы переписываем вещи, чтобы использовать MVars, если у нас есть правильный дизайн - поскольку они быстрее.

Просто используйте это. Это ничего важного. Насколько я понимаю, STM в Haskell «решена». Больше нечего делать. Итак, мы его используем.

28
ответ дан 24 November 2019 в 17:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: