Ключевое слово volatile C ++ с глобальной общей переменной, к которой обращается функция

У меня есть многопоточное приложение C ++.

Теперь я знаю, что для глобальных общих переменных вы должны в некоторых случаях использовать volatile при проверке состояния переменной, иначе компилятор может предположить, что значение переменной никогда не изменяется (в этом потоке).

А что, если вместо проверки состояния переменной я вызову метод, который возвращает значение переменной? Например:

static int num = 0;

...

void foo()
{
   while(getNum() == 0)
   {
      // do something (or nothing)
   }
}

Придется ли мне сделать num изменчивой переменной? или компилятор распознает это, поскольку я m с помощью метода доступа к этой переменной num, результат не кэшируется?

У кого-нибудь есть идеи?

Заранее спасибо,

~ Джулиан

edit : внутри моего цикла while I удалил вызов сна и заменил его чем-то общим, например, комментарием, чтобы что-то сделать (или ничего)

5
задан jbu 6 September 2010 в 09:43
поделиться