У меня есть многопоточное приложение C ++.
Теперь я знаю, что для глобальных общих переменных вы должны в некоторых случаях использовать volatile при проверке состояния переменной, иначе компилятор может предположить, что значение переменной никогда не изменяется (в этом потоке).
А что, если вместо проверки состояния переменной я вызову метод, который возвращает значение переменной? Например:
static int num = 0;
...
void foo()
{
while(getNum() == 0)
{
// do something (or nothing)
}
}
Придется ли мне сделать num изменчивой переменной? или компилятор распознает это, поскольку я m с помощью метода доступа к этой переменной num, результат не кэшируется?
У кого-нибудь есть идеи?
Заранее спасибо,
~ Джулиан
edit : внутри моего цикла while I удалил вызов сна и заменил его чем-то общим, например, комментарием, чтобы что-то сделать (или ничего)