Сообщение Re[32]: Безопасность Rust от 31.05.2019 9:21
Изменено 31.05.2019 9:26 ·
Re[32]: Безопасность Rust
Здравствуйте, alex_public, Вы писали:
_>Ха. Вообще то для чтения/записи atomic переменной используется в точности такая же инструкция, как и для обычного int'a. Можешь посмотреть на реальном коде https://godbolt.org/z/I3lOwe, если так до сих пор сам не понял и мне не веришь. Банально потому, что это эти инструкции атомарные от природы!
Ну давай посмотрим вместе:
atomic:
non atomic:
Действительно... одной инструкцией меньше, одной больше... Кака разница? В главном-то ты прав!
А ещё давай попробуем другие опции. "x86-64 clang 8.0.0":
atomic:
non atomic:
Или вот "ARM64 gcc 8.2":
atomic:
non atomic:
А особенно прикольно "ARM gcc 8.2"
atomic:
non atomic:
Никакой синхронизации, говоришь?
_>Ха. Вообще то для чтения/записи atomic переменной используется в точности такая же инструкция, как и для обычного int'a. Можешь посмотреть на реальном коде https://godbolt.org/z/I3lOwe, если так до сих пор сам не понял и мне не веришь. Банально потому, что это эти инструкции атомарные от природы!
Ну давай посмотрим вместе:
atomic:
mov DWORD PTR v[rip], 1
mfence
non atomic:
mov DWORD PTR v1[rip], 1
Действительно... одной инструкцией меньше, одной больше... Кака разница? В главном-то ты прав!
А ещё давай попробуем другие опции. "x86-64 clang 8.0.0":
atomic:
mov eax, 1
xchg dword ptr [rip + v], eax
non atomic:
mov dword ptr [rip + v1], 1
Или вот "ARM64 gcc 8.2":
atomic:
stlr w2, [x1]
non atomic:
str w2, [x1]
А особенно прикольно "ARM gcc 8.2"
atomic:
bl __sync_synchronize
mov r3, #1
ldr r4, .L4
str r3, [r4]
bl __sync_synchronize
non atomic:
mov r3, #1
Никакой синхронизации, говоришь?
Re[32]: Безопасность Rust
Здравствуйте, alex_public, Вы писали:
_>Ха. Вообще то для чтения/записи atomic переменной используется в точности такая же инструкция, как и для обычного int'a. Можешь посмотреть на реальном коде https://godbolt.org/z/I3lOwe, если так до сих пор сам не понял и мне не веришь. Банально потому, что это эти инструкции атомарные от природы!
Ну давай посмотрим вместе:
atomic:
non atomic:
Действительно... одной инструкцией меньше, одной больше... Кака разница? В главном-то ты прав!
А ещё давай попробуем другие опции. "x86-64 clang 8.0.0":
atomic:
non atomic:
Или вот "ARM64 gcc 8.2":
atomic:
non atomic:
А особенно прикольно "ARM gcc 8.2"
atomic:
non atomic:
Никакой синхронизации, говоришь?
_>Ха. Вообще то для чтения/записи atomic переменной используется в точности такая же инструкция, как и для обычного int'a. Можешь посмотреть на реальном коде https://godbolt.org/z/I3lOwe, если так до сих пор сам не понял и мне не веришь. Банально потому, что это эти инструкции атомарные от природы!
Ну давай посмотрим вместе:
atomic:
mov DWORD PTR v[rip], 1
mfence
non atomic:
mov DWORD PTR v1[rip], 1
Действительно... одной инструкцией меньше, одной больше... Кака разница? В главном-то ты прав!
А ещё давай попробуем другие опции. "x86-64 clang 8.0.0":
atomic:
mov eax, 1
xchg dword ptr [rip + v], eax
non atomic:
mov dword ptr [rip + v1], 1
Или вот "ARM64 gcc 8.2":
atomic:
stlr w2, [x1]
non atomic:
str w2, [x1]
А особенно прикольно "ARM gcc 8.2"
atomic:
bl __sync_synchronize
mov r3, #1
ldr r4, .L4
str r3, [r4]
bl __sync_synchronize
non atomic:
mov r3, #1
str r3, [r4, #4]
Никакой синхронизации, говоришь?