Информация об изменениях

Сообщение Re[6]: Доступ к локальной переменной из разных потоков от 19.11.2020 9:00

Изменено 19.11.2020 10:28 netch80

Re[6]: Доступ к локальной переменной из разных потоков
Здравствуйте, Mr.Delphist, Вы писали:

MD>Здравствуйте, VladD2, Вы писали:


VD>>Процессор не может атомарные операции переупорядочивать


MD>То, что операция атомарна, вовсе не мешает процессору переложить две из них местами, если он не видит между ними зависимости. Запрет для instructions reordering может быть внесён, например, при помощи memory barrier. А уж атомарны или неатомарны операции — роли не играет.


Подозреваю, Влад мыслит в контексте x86 без вариантов, а у x86 очень жёсткий порядок, там

>> Reads are not reordered with other reads.

>> Writes are not reordered with older reads.
>> Writes to memory are not reordered with other writes, (немного незначащих исключений)
>> Locked instructions have a total order.

Остаётся только случай записи после чтения по другому адресу и оба не locked.

Ну или в C# атомарная всегда делается locked?
Re[6]: Доступ к локальной переменной из разных потоков
Здравствуйте, Mr.Delphist, Вы писали:

MD>Здравствуйте, VladD2, Вы писали:


VD>>Процессор не может атомарные операции переупорядочивать


MD>То, что операция атомарна, вовсе не мешает процессору переложить две из них местами, если он не видит между ними зависимости. Запрет для instructions reordering может быть внесён, например, при помощи memory barrier. А уж атомарны или неатомарны операции — роли не играет.


Подозреваю, Влад мыслит в контексте x86 без вариантов, а у x86 очень жёсткий порядок, там

>> Reads are not reordered with other reads.

>> Writes are not reordered with older reads.
>> Writes to memory are not reordered with other writes, (немного незначащих исключений)
>> Locked instructions have a total order.

Остаётся только случай чтения после записи по другому адресу и оба не locked.

Ну или в C# атомарная всегда делается locked?