Сегодня мы столкнулись с проблемой статических функций-членов в многопоточной среде. Вопрос, который мы задали себе, и не мог найти удовлетворительного ответа: также являются локальными varialbes статических функций-членов?
// header
class A
{
static int test();
}
// implementation
int A::test()
{
int a = rand();
int b = rand();
int c = a + b;
return c;
}
Скажем, у вас есть два потока, вызывающих A:: test(). Возможно ли, что в то время как нить 1 прорабатывает c = a + b
поток 2 входит в test() и изменяет значение a
, назначая новое возвращаемое значение rand(), или, другими словами, оба потока управляют некоторыми ячейками памяти для, b и c?