говорит компилятору что данную переменную не надо оптимизировать, то есть если дальше данная переменная ни где не изменяется, то читать ее надо каждый раз (если не стоит volatile то компилятор считывает из памяти переменную один раз). И данный классификатор безопасно использовать только в случае если присвоение в переменную проходит в один такт процессора, то есть ее можно применять безопасно в многопоточности только с типом char?
это распространенная ошибка по поводу "не надо оптимизировать" на самом деле он говорит не оптимизировать ЧТЕНИЕ и делать его явно каждый раз. например в кеше переменая есть, но вне кеша ее поменяли или в цикле компилятор видит, что она не меняется и выкидывает операцию чтения. как пример оптимизации при использовании volatile volatile char a =3; char b =4; cout « b; тут переменная a будет выкинута, это пример оптимизации, даже не смотря на то что был volatile
Обсуждают сегодня