В последнее время я много читаю о транзакционной памяти. Существует немного шумихи вокруг ТМА, так много людей с энтузиазмом об этом, и она дает решение болезненных проблем с блокировкой, но регулярно и жалобы:Мы просим слишком много транзакционной памяти?
- Вы не можете сделать I/O
- Вы должны написать свои атомные секции, чтобы они могли работать в несколько раз (будьте осторожны с вашим локальным переменными!)
- программного обеспечения транзакционной памяти предлагает низкую производительность
- [Вставьте огорчает здесь]
Я понимаю эти проблемы: чаще всего вы найдете статьи о STM, которые работают только на определенном оборудовании, поддерживающем некоторую действительно отличную атомную операцию (например, LL/SC) или ее нужно поддерживать каким-то мнимым компилятором, или она требует, чтобы все Доступ к памяти должен быть транзакционным, он вводит ограничения типа monad-стиля и т. Д. И прежде всего: это настоящие проблемы.
Это заставило меня спросить себя: Что говорит о локальном использовании транзакционной памяти в качестве замены замков? Будет ли это уже приносить достаточное значение или должна быть использована транзакционная память по всему месту, если она используется вообще?
@none, это выглядит интересно. –
Да, я знаю, что один - я также прочитал статью, которая очень интересна (и побудила меня опубликовать еще один вопрос о производительности сборки мусора). –