Вопросы с тегом «volatile»

Volatile - это квалификатор, используемый для определения области хранения данных (объекта, поля, переменной, параметра), которая «может изменяться сама по себе», таким образом запрещая некоторые оптимизации генератора кода. В некоторых, но не во всех языках, которые распознают этот квалификатор, доступ к таким данным является потокобезопасным.

8
Необходимость в модификаторе volatile при блокировке с двойной проверкой в ​​.NET
В нескольких текстах говорится, что при реализации блокировки с двойной проверкой в ​​.NET к блокируемому полю должен применяться модификатор volatile. Но почему именно? Рассмотрим следующий пример: public sealed class Singleton { private static volatile Singleton instance; private static object syncRoot = new Object(); private Singleton() {} public static Singleton Instance …
85 c#  singleton  volatile 

6
Разрешено ли компилятору оптимизировать локальную изменчивую переменную?
Разрешено ли компилятору оптимизировать это (согласно стандарту C ++ 17): int fn() { volatile int x = 0; return x; } к этому? int fn() { return 0; } Если да, то почему? Если нет, то почему? Вот некоторые размышления по этому поводу: текущие компиляторы компилируются fn()как локальная переменная, помещенная …

3
Разрешено ли компилятору постоянно сворачивать локальную переменную?
Рассмотрим этот простой код: void g(); void foo() { volatile bool x = false; if (x) g(); } https://godbolt.org/z/I2kBY7 Вы можете видеть , что ни gccни clangоптимизируют из потенциального вызова g. В моем понимании это правильно: абстрактная машина должна предполагать, что volatileпеременные могут измениться в любой момент (например, из-за аппаратного …


3
Гарантирует ли «volatile» что-либо вообще в переносимом коде C для многоядерных систем?
После глядя на кучу из других вопросов и их ответов , я получаю впечатление , что не существует никакого широко распространенного соглашения о том , что «летучий» ключевое слово в C означает точно. Даже сам стандарт не достаточно ясен для того, чтобы все могли понять, что это значит . Среди …

1
Правильна ли эта реализация C ++ AtomicInt?
Предпосылка: я работаю со встроенной (почти голой) средой ARM, где у меня даже нет C ++ 11 (с std::atomic<int>), поэтому избегайте ответов типа « просто используйте стандартный C ++std::atomic<int> »: я не могу . Является ли эта ARM- реализация AtomicInt правильной? (предположим, что архитектура ARM - это ARMv7-A ) Вы …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.