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

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

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

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

static int num = 0;

...

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

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

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

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

~ Julian

edit : Например, я читаю таблицу HISTORY сервера teamcity, в поле build_start_time_server у меня есть это значение на одном ...

, пожалуйста, помогите мне с этим, я хочу преобразовать значение из Bigint в datetime. Например, я читаю ИСТОРИЯ таблицы teamcity server , в поле build_start_time_server у меня есть это значение в одной записи 1283174502729.

Как я могу преобразовать в datetime значение ???

Спасибо

15
задан krock 6 September 2010 в 09:26
поделиться