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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
newbie666
Заблокирован
#1

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

20.08.2013, 14:15. Просмотров 366. Ответов 3
Метки нет (Все метки)

Система: Win7 x64. Один проц Intel i7 3770k.

Предположим, что я в студии собираю 64-х битным компилятором проект, в котором есть:
C++
1
2
int x = 10;
x = x >> 1;
Ну это чисто для примера, а так по хорошему, "х" - глобальная переменная, которую пытаются по битово изменить много потоков...
Интересно, является ли такая операция в 64x винде атомарна?
А битовый сдвиг с long long ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2013, 14:15     Атомарна ли операция битового сдвига?
Посмотрите здесь:

Переписать код без использования операций сдвига и "битового and" C++
C++ регистр сдвига????
C++ Операции сдвига
операция сдвига C++
Для битового массива C++
Операция побитового сдвига C++
Вывести данные из файла, заданные в виде битового поля C++
Карта на основе битового поля C++
Атомарна ли операция присваивания в однопроцессорной машине? C++
C++ Реализовать функции для проверки битового представления типа данных
C++ Класс реализовать с битового поля, предметы через перечисление
Заполнить файл строками из двусвязного списка, удалив элементы, содержащие более одного битового символа C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
eocron
Кактус
 Аватар для eocron
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
20.08.2013, 14:31     Атомарна ли операция битового сдвига? #2
Я не уверен, но в списках атомарных операций, таких как сложение вычитание и т.д. она не числится, так что приготовьтесь лочить ресурс во время битовых сдвигов.
Somebody
2775 / 1589 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
20.08.2013, 15:05     Атомарна ли операция битового сдвига? #3
Даже одна инструкция процессора без префикса lock неатомарна.

Добавлено через 1 минуту
Может быть, не слишком точно выразился, но смысл, думаю, понятен.
Убежденный
Системный программист
 Аватар для Убежденный
14635 / 6596 / 1045
Регистрация: 02.05.2013
Сообщений: 10,865
Завершенные тесты: 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     Атомарна ли операция битового сдвига?
Ответ Создать тему
Опции темы

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