Size: a a a

Compiler Development

2020 December 24

VE

Vyacheslav Egorov in Compiler Development
(Или там SRW locks) если нужно с нераздельными ресурсами работать то доктор прописал использовать нормальные примитивы синхронизации а не самописные
источник

VE

Vyacheslav Egorov in Compiler Development
Проблема со списком мне не до конца ясна. Обычно в многопоточном программировании заморачиваются порядком в котором write из одного потока становятся видны в другом потоке. Те вы допустим инициализируете объект и потом добавляете его в список - в слабых моделях можно оказаться в ситуации где указатель на объект станет видим до того как другой поток (сидящий на другом ядре) увидит записи инициализации полей объекта - но синхронизация встроенными примитивами это предотвращает. На Интеле такой проблемы нет (если только компилятор не переупорядочит, сам процессор такого не делает).
источник

RS

Rifat S in Compiler Development
Если "но синхронизация встроенными примитивами это предотвращает" то действительно надо попробовать сделать синхронизацию встроенными средствами, возможно, это действительно решит проблему.
источник

VE

Vyacheslav Egorov in Compiler Development
Я сомневаюсь что у вас проблема именно в этом - если вы не на АРМе. Мой совет был бы выписать на бумажку операции которые делает один поток и которые делает другой поток в столбик и рассмотреть разные варианты их чередования. Это покажет проблему. Если бы у вас был бы не самописный язык а плюсы я бы просто рекомендовал засунуть в TSAN
источник

EM

Evgenii Moiseenko in Compiler Development
Rifat S
Спасибо, Роман за статьи. Почитаю. По поводу того, что Деккер не корректен н x86. Есть какой-нибудь алгоритм аналогичный Деккеру, который можно достаточно легко реализовать и который будет корректен на x86?
Обычный спинлок на CAS будет корректен без барьеров на x86 (но нужно использовать CAS, а вы вроде не хотите это делать).
Из экзотики, есть вот такой алгоритм https://en.m.wikipedia.org/wiki/Szyma%C5%84ski%27s_algorithm. Он вроде тоже не требует барьеров, но тут я не до конца уверен :)
источник

AG

Alex Gryzlov in Compiler Development
Alexander Tchitchigin
What about atomic values/types and CAS?
к касам всё равно ж нужны барьеры в слабой памяти
источник

AT

Alexander Tchitchigi... in Compiler Development
Alex Gryzlov
к касам всё равно ж нужны барьеры в слабой памяти
Я про C11 думал. Там барьеры прямо в CAS не встроены?
источник

AG

Alex Gryzlov in Compiler Development
по моему нет, там надо дополнительно желаемый ордеринг прописывать
источник

AG

Alex Gryzlov in Compiler Development
но тут еще вопрос что считать C11, там же не одна модель
источник

AG

Alex Gryzlov in Compiler Development
насколько я понимаю это от того что нужно поддерживать как x86 который довольно строг, так и всякие армы которые послабее
источник

AT

Alexander Tchitchigi... in Compiler Development
Alex Gryzlov
насколько я понимаю это от того что нужно поддерживать как x86 который довольно строг, так и всякие армы которые послабее
Это поддерживается как бы "автоматически" за счёт того, что на x86 уровень relaxed по факту не более relaxed, чем cst или как их там.
источник

AG

Alex Gryzlov in Compiler Development
так я и говорю что оно не только в х86 должно уметь гнать
источник

DF

Dollar Føølish in Compiler Development
rmw операции всегда видят последнее значение в порядке модификации
источник

AT

Alexander Tchitchigi... in Compiler Development
Alex Gryzlov
так я и говорю что оно не только в х86 должно уметь гнать
Так если корректно работает на relaxed, значит на x86 и подавно. 😊
источник

DF

Dollar Føølish in Compiler Development
Если по с++ модели судить
источник

AG

Alex Gryzlov in Compiler Development
я короче это всё к тому что во всех формализациях C11 что я видел, касы всегда аннотированы двумя параметрами ордеринга
источник

AG

Alex Gryzlov in Compiler Development
один для успешного чтения, второй для фейла
источник

AG

Alex Gryzlov in Compiler Development
а там уже от архитектуры конкретной зависит будут там доп барьеры или нет
источник

AG

Alex Gryzlov in Compiler Development
типа такого
источник

DF

Dollar Føølish in Compiler Development
Ага , полезно
источник