Я слоупок. Оказывается ещё в феврале Intel выктаил спецификацию т.н.
Intel TSX. И вроде как процессоры "haswell", которые поддерживают TSX уже начали штамповать и скоро вывалят на прилавки. У реализации есть несколько ограничений, самые существенные -
всё работает с точностью до кешлайна (64byte) и все операции с памятью под одной транзакцией
(
Read more... )
Comments 6
есть 2 потока, каждый пытается в цикле провести транзакцию над одним и тем же объектом. получаем вечный deadlock?
типа, пока один пытался провести уже влез другой, облом. аналогично у второго. или я что-то не понимаю?
Reply
Deadlock будет если первый пишет в [A], потом [B], а второй в [B], потом [A]. Тогда да, они могут вечно друг об друга обламываться. Ну а дальше вопрос - может ли правильный порядок записи A, B превратится в неправильный B,A из-за write reorder. Вроде на x86 не должен, поэтому всё вроде как должно быть хорошо.
Reply
как я понял, транзакционная память это когда кеш поддерживает несколько версий данных. и транзакция либо выполняется полностью, либо откатывается к началу.
скажем, есть вектор + счётчик элементов + crc. добавить элемент это одна транзакция, но много действий.
пока 1-й поток выполняет транзакцию, 2-й читает старые данные.
если 2-й запишет что-то до конца транзакции 1-го, то изменения 1-го откатываются назад.
Reply
Reply
Leave a comment