Запитання з тегом «volatile»

Летючий - це класифікатор, який використовується для визначення області зберігання даних (об'єкта, поля, змінної, параметра), яка "може змінюватися самостійно", тим самим забороняючи деякі оптимізації генератора коду. У деяких, але не всіх мовах, які розпізнають цей класифікатор, доступ до таких даних є безпечним для потоків.

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

6
Чи дозволено компілятору оптимізувати локальну мінливу змінну?
Чи дозволено компілятору оптимізувати це (згідно зі стандартом C ++ 17): int fn() { volatile int x = 0; return x; } до цього? int fn() { return 0; } Якщо так, чому? Якщо ні, чому ні? Ось деякі роздуми з цього приводу: поточні компілятори компілюють fn()як локальну змінну, яку …

3
Чому корисний покажчик від точки до волатильності, на зразок “volatile int * p”?
volatileполягає в тому, щоб сказати компілятору не оптимізувати посилання, щоб кожне читання / запис не використовувало значення, що зберігається в регістрі, а робило реальний доступ до пам'яті. Я розумію, що це корисно для якоїсь звичайної змінної, але не розумію, якvolatile впливає на покажчик. volatile int *p = some_addr; int a …
78 c  pointers  volatile 

12
Найпростіший і зрозумілий приклад мінливого ключового слова в Java
Я читаю про мінливе ключове слово на Java і повністю розумію його теоретичну частину. Але те, що я шукаю, - це хороший приклад, який показує, що сталося б, якби змінна не була мінливою і якби вона була. Нижче фрагмент коду не працює належним чином (взято звідси ): class Test extends …

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

1
Чому летуча застаріла в C ++ 20?
Відповідно до cppreference , більшість застосувань volatileключового слова повинні бути застаріли в C ++ 20. У чому недолік volatile? І яке альтернативне рішення, коли не використовується volatile?
17 c++  volatile  c++20 

3
Чи гарантує "непостійний" взагалі що-небудь в портативному коді С для багатоядерних систем?
Після дивлячись на купу з інших питань і їх відповідей , я отримую враження , що не існує ніякого широко поширеного угоди про те , що «летючий» ключове слово в 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.