Форум программистов, компьютерный форум CyberForum.ru

Атомарна ли операция битового сдвига? - C++

Восстановить пароль Регистрация
 
newbie666
Заблокирован
20.08.2013, 14:15     Атомарна ли операция битового сдвига? #1
Система: Win7 x64. Один проц Intel i7 3770k.

Предположим, что я в студии собираю 64-х битным компилятором проект, в котором есть:
C++
1
2
int x = 10;
x = x >> 1;
Ну это чисто для примера, а так по хорошему, "х" - глобальная переменная, которую пытаются по битово изменить много потоков...
Интересно, является ли такая операция в 64x винде атомарна?
А битовый сдвиг с long long ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
eocron
Кактус
 Аватар для eocron
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
20.08.2013, 14:31     Атомарна ли операция битового сдвига? #2
Я не уверен, но в списках атомарных операций, таких как сложение вычитание и т.д. она не числится, так что приготовьтесь лочить ресурс во время битовых сдвигов.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
20.08.2013, 15:05     Атомарна ли операция битового сдвига? #3
Даже одна инструкция процессора без префикса lock неатомарна.

Добавлено через 1 минуту
Может быть, не слишком точно выразился, но смысл, думаю, понятен.
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,357
Завершенные тесты: 1
20.08.2013, 16:59     Атомарна ли операция битового сдвига? #4
Цитата Сообщение от newbie666 Посмотреть сообщение
Интересно, является ли такая операция в 64x винде атомарна?
Не атомарна. Операция сдвига принадлежит классу "read-modify-write".
Как и инкремент. Поэтому нужна явная синхронизация.

Цитата Сообщение от Somebody Посмотреть сообщение
Даже одна инструкция процессора без префикса lock неатомарна.
Чтение-запись атомарны. На x86-amd64. При условии, что корректно выравнены или
находятся в пределах одной кэш-линии.

А вообще, все это есть в "Intel Developer's Architecture Manual" (Vol III, 8.1 "Locked Atomic Operations").
Yandex
Объявления
20.08.2013, 16:59     Атомарна ли операция битового сдвига?
Ответ Создать тему
Опции темы

Текущее время: 11:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru