что такое транзакционная память по сравнению с акторной моделью и блокировками

Что такое транзакционная память по сравнению с синхронизацией на основе акторов и блокировок?

Насколько я понимаю, это еще один механизм управления параллелизмом. Или это что-то совершенно другое для актеров, событий, замков и т.д.?


person lapots    schedule 24.01.2017    source источник


Ответы (1)


Транзакционная память (TM) — это методика синхронизации без блокировки. В механизме синхронизации на основе блокировки один поток получает блокировку и входит в синхронизированный блок, в то время как другие ждут, пока блокировка не станет доступной. В TM потоки не ждут блокировки, каждый из них продолжает работу, как если бы блокировка была доступна. Однако, чтобы обеспечить правильность выполнения, все обращения к памяти внутри синхронизированного блока выполняются спекулятивно. Как только выполнение достигает конца синхронизированной области, потоки взаимодействуют друг с другом и совместно используют области памяти для чтения и записи (называемые набором чтения и набором записи в терминологии TM). Если поток прочитал ячейку памяти, которая была спекулятивно записана другим потоком, произошел конфликт, и будет иметь место разрешение конфликта. В конце концов, если у двух или более потоков нет конфликтов, они оба могут продолжить работу и будут обновлять память спекулятивными операциями записи. Несмотря на сложность, связанную с реализацией, вы получаете преимущество более тонкой блокировки (на основе ячеек памяти) с программой, написанной аналогично крупнозернистой блокировке (вам нужно только указать начало и конец транзакции).

Существуют десятки систем ТМ, основанных на том, как вы выполняете управление версиями данных (исходные данные против спекулятивных данных) и разрешение конфликтов (нетерпеливый — делайте, как идете, ленивый — делайте это в конце). Также платформа, на которой они реализованы (аппаратное обеспечение, программное обеспечение, гибрид).

Я не очень хорошо разбираюсь в параллелизме на основе актеров. С моими ограниченными знаниями кажется, что он работает, отправляя сообщения другим акторам, и каждый актор выполняет работу, которую его просят, и создает больше акторов, если это требуется. Поэтому я думаю, что концептуально это похоже на программирование в стиле «разделяй и властвуй», когда работа создается на лету и передается доступным актерам. Этот тип парадигмы, подобно функциональному программированию, ортогонален традиционному стилю разделяемой памяти, где необходима синхронизация. Поэтому я предполагаю, что модели на основе акторов не требуют блокировки или синхронизации без блокировки, поскольку они по своей сути параллельны.

person Isuru H    schedule 24.01.2017
comment
Так в основном все механизмы синхронизации? - person lapots; 24.01.2017
comment
Первоначально TM была предложена как механизм синхронизации без блокировки, с тех пор было предпринято несколько попыток использовать ее в качестве модели программирования, в которой единицей вычислений является транзакция. Транзакции являются хорошим кандидатом для использования параллелизма благодаря своим свойствам ACI. - person Isuru H; 24.01.2017