Описание тега volatile

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

CodeWarrior для программы MCF51QE128 Получение исключений "нарушение привилегий" при записи на флэш-память

У меня есть приложение, написанное на C (новое для меня) в CodeWarrior. Процессор MCF51QE128. Я знаком с языком ассемблера в старых (8-битных) процессорах MC6809. Проблемный код: FSTAT=(byte)(0x30); asm { move.l D0,0x1f000; // Dummy address writeVar…
22 фев '16 в 22:36
2 ответа

Потоки Java, обращающиеся к полю Объекта

Я получил вопрос в интервью, спрашивая, как показано ниже: В Java объект, имеющий поле, как указано ниже... public class MyObject { int count=0; public synchronized void m() { for(int j=0; j< 1000; j++) { System.out.println(Thread.currentThread()…
17 окт '17 в 05:19
2 ответа

Этот потокобезопасный?

Я хочу сделать мой класс поточно-безопасным без больших накладных расходов. Экземпляры будут редко использоваться одновременно, но это может произойти. Большая часть класса неизменна, в качестве кэша используется только один изменяемый член: private…
07 фев '11 в 19:10
3 ответа

Волатильное целое и компьютерная безопасность

Вот проблема, которую я нашел в книге о компьютерной безопасности. Он показывает код, но не объясняет, почему это опасно. Можете ли вы объяснить это мне? Вот проблема: #include <stdlib.h> #include <string.h> void f (char *s) { char buf[3…
22 фев '14 в 20:10
1 ответ

Почему волатильность ничего не возвращает при запуске linux_pslist

Мне удалось извлечь энергозависимую память из эмулятора андроида, используя LiME и используя волатильность для дальнейшего анализа памяти. После запуска команды: $ python vol.py --profile = LinuxGoldfish3_4ARM -f /path/to/lime.dump linux_pslist Я по…
2 ответа

Почему использование ключевого слова volatile для разделяемой памяти невозможно, когда атомарные операции выполняются в разделяемой памяти?

У меня есть фрагмент кода CUDA, в котором потоки выполняют атомарные операции с общей памятью. Я думал, так как результат атомарной операции будет виден другим потокам блока в любом случае мгновенно, возможно, было бы хорошо поручить компилятору име…
13 апр '14 в 16:55
6 ответов

Параллельность, видимость объекта

Я пытаюсь выяснить, не страдает ли приведенный ниже код от возможных проблем с параллелизмом. В частности, проблема видимости связана с изменчивыми переменными. Volatile определяется следующим образом: значение этой переменной никогда не будет кэшир…
14 дек '09 в 16:04
4 ответа

Волатильность и безопасность потоков в Java

Пожалуйста, возьмите этот очень простой пример: volatile int globalVar = 1; Моя тема: if (globalVar > 0) { globalVar--; } Теперь я должен решить, достаточно ли сделать переменную volatile, чтобы предотвратить состояние гонки и сделать этот поток …
1 ответ

Почему все функции-члены в std::atomic появляются как с volatile, так и без него?

Я заметил, что большинство функций-членов std::atomic<T> типы объявляются дважды, один раз с volatile модификатор и один раз без ( пример)). Я проверил исходный код реализации стандартной библиотеки G++ и обнаружил, что все они являются точным…
24 июл '18 в 08:32
2 ответа

Volatile против статической переменной в многопоточной среде

В настоящее время я изучаю многопоточность и нашел что-то интересное, что не могу объяснить. Насколько мне известно, если два потока обращаются к статической переменной, они могут создавать свои собственные копии в своем кэше. Обновление, выполненно…
23 июн '17 в 08:22
1 ответ

Изменчивые переменные или проблемы изменчивой структуры в C

Вот мой заголовочный файл (Header.h) #include <stdio.h> #include <string.h> void Process(void); и "Header.C" #include <stdio.h> #include <string.h> #include "Header.h" struct St{ unsigned long int volatile Var1; unsigned long…
18 мар '17 в 07:50
1 ответ

Что происходит после записи в переменную volatile?

Интересно, если запись в энергозависимую переменную заставит jvm синхронизировать все энергонезависимые переменные с памятью, например, что произойдет в следующем коде: volatile int x; int y; y=5; x=10; x будет записан в память, но что будет с y? эт…
20 авг '11 в 01:40
2 ответа

Инкремент изменчивой переменной в C

Рассмотрим следующие три выражения: ++x; x += 1; x = x + 1; Насколько я знаю, они идентичны по семантике, игнорируя перегрузку операторов в C++. Однако сегодня я прочитал утверждение, что они разные, особенно когда x объявлен volatile, Чтобы провери…
22 сен '15 в 17:05
2 ответа

Использование ключевого слова C# Volatile в многопоточном приложении

У меня есть класс, в котором есть несколько arraylists. Мой основной класс создает новый экземпляр этого класса. В моем основном классе есть как минимум 2 потока, добавляющие и удаляющие из моего класса с массивами в нем. На данный момент все работа…
28 июл '10 в 07:59
1 ответ

Как понять - Блокировка не требуется по любой другой причине во время обращения к переменной

Из книги "Параллелизм Java на практике", стр. 26: Вы можете использовать переменные переменные только тогда, когда выполнены все следующие критерии: Запись в переменную не зависит от ее текущего значения, или вы можете гарантировать, что только один…
17 июл '14 в 20:38
1 ответ

Избегает ли энергозависимая запись переменной неправильных записей?

Гарантирует ли volatile запись, что все записи (энергонезависимые / volatile записи) произойдут до того, как они в одном потоке будут видны другому потоку? Будет ли следующий код всегда производить 90,80 как вывод? public class MyClass { private boo…
05 май '14 в 10:59
2 ответа

Безопасен ли синхронизированный доступ к энергонезависимым полям?

Я не могу найти ответ на этот конкретный сценарий в любом месте. Если я позвоню init() одновременно из двух потоков, один из вызовов гарантированно увидит, что time больше не равно нулю? Есть ли time нужно быть volatile также? Это работает как join(…
06 окт '14 в 05:34
1 ответ

clang vs gcc: другой код для нестабильного доступа

Рассмотрим этот пример: volatile unsigned int x; unsigned int y; void f() { x /= 2; } void g() { y /= 2; } При компиляции с -Os clang-6.0 выдает на x64 для f и g одинаковые shrl <offset>(%rip) шаблон инструкции (см. https://godbolt.org/g/hUPpr…
26 апр '18 в 09:47
1 ответ

g++ 6.3, суммирование по Кахану по внутренним признакам avx сериализуется с ключевым словом volatile

Используя avx intrinsics и алгоритм суммирования Кахана, я попробовал это (только часть "сумматора"): void add(const __m256 valuesToAdd) { volatile __m256 y = _mm256_sub_ps(valuesToAdd, accumulatedError); volatile __m256 t = _mm256_add_ps(accumulato…
05 авг '17 в 23:20
6 ответов

Почему volatile не работает должным образом

Сегодня я создавал одну тайм-аут работу, используя TimerTask но попал в новую проблему, где у меня есть static volatile boolean переменная flag, Насколько я понимаю, как только значение этой переменной изменяется, она уведомляется всеми работающими …
26 июл '12 в 13:37