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

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

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

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

20.08.2013, 14:15. Просмотров 379. Ответов 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     Атомарна ли операция битового сдвига?
Посмотрите здесь:

Атомарна ли операция присваивания в однопроцессорной машине? - C++
? :) Добавлено через 1 минуту судя по это - атомарна :) 18: int a = 5; 0117C760 C7 45 E8 05 00 00 00 mov dword...

Переписать код без использования операций сдвига и "битового and" - C++
как переписать (num & ((1) << k)) != 0не используя операцию & и <<? Помогите, пожалуйста!

операция сдвига - C++
Объясните пожалуйста как именно работает и для чего нужна операция сдвига влево, в выражении например: N = 10; r = 1 << N; И если...

Операция побитового сдвига - C++
Задача состоит в том,что нужно введенное число (unsigned char) перевести в двоичную, а затем проверить биты полученного числа (тоесть, что...

Для битового массива - C++
Добрый день, форумчане! Подскажите, как можно реализовать данные функции : 1)реализовать процедуру установки значения бита, заданного...

Карта на основе битового поля - C++
Здравствуйте. Реализую собственный алокатор памяти. Мне нужно знать где свободная память, а где нет. Для этого хочу использовать битовые...

Чтение/запись битового файла (не работает) - C++
Программа по идее должна записывать/читать битовый файл, но она даже его не создаёт. ...

Вывести данные из файла, заданные в виде битового поля - C++
Задание, вывести данные из нескольких первых строк файла, причем эти данные должны быть заданны в виде битового поля. Какие форматы имеют...

Класс реализовать с битового поля, предметы через перечисление - C++
Ученики. Ф.И.О., класс (цифра+буква) предметы, оценки, средний балл. Выбор по фамилии, выбор по среднему баллу. Класс реализовать с помощью...

Реализовать функции для проверки битового представления типа данных - C++
Для типа данных int Необходимо реализовать функции для: 1. Проверки битового представления типа данных. Функция должна возвращать...


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

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

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

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