Атомная операция против СТМ - PullRequest
0 голосов
/ 24 мая 2011


Я пробовал некоторые тесты для этих двух (программная транзакционная память и атомарная операция, я думаю, что они не одинаковы), хотя я не особо много работал с STM (мне кажется, это трудно использовать), но я успешно попробовалподсчет бенчмарка, т.е. все потоки увеличивают общий счетчик в 50 млн раз, и заметили, что атомарная работа работает лучше, чем STM.
Итак, я хочу знать, поскольку STM не полностью разработаны, хорошо ли они работают в реальной ситуации, чем атомарная операция?
Кто-то переключился на другое из-за производительности?Пожалуйста, поделитесь информацией ..
Журнал, который я нашел в Интернете: Параллельное программирование без блокировок

PS Я использую JAVA в качестве языка программирования.СТМ: - мульти-стих.AtomicOperatinn: AtomicInteger.

1 Ответ

8 голосов
/ 24 мая 2011

Атомные операции и СТМ очень разные звери. В частности, атомарные операции являются гораздо более низкоуровневыми конструкциями - на самом деле атомарные операции различного рода обычно используются для реализации STM. В основном:

  • Атомная операция позволяет вам выполнить безопасное для параллелизма обновление одного объекта . Это просто и быстро, обычно это всего лишь одна инструкция на современном оборудовании.
  • STM позволяет выполнять безопасное параллелизмное обновление нескольких объектов . Это сложно.

Поэтому в системах STM необходимо добавить дополнительные накладные расходы на ведение бухгалтерского учета, чтобы управлять сложностью обновления транзакций - так что если вам нужно обновить только один объект, атомарная операция почти всегда будет быстрее.

Кроме того, вы должны знать, что нет единого мнения о лучшем способе проектирования систем STM - это активная тема исследования, и в этом есть много компромиссов. Поэтому то, что хорошо работает в одной системе STM, может не работать хорошо в другой системе STM и т. Д.

Например: моя любимая система STM на данный момент - Clojure - она ​​особенно привлекательна, потому что она поддерживает управление несколькими параллельными версиями и никогда не мешает читателям - что дает значительное преимущество в производительности во многих распространенных сценариях. 1023 *

...