Статические методы вложенного локального класса - PullRequest
2 голосов
/ 15 февраля 2012

Мой вопрос является расширением этого вопроса .

В первоначальном вопросе ОП спросил, нужно ли защищать локальные переменные статической функции от скачек данных. Ответ был таков: каждый поток получает свой собственный кадр стека. Можно ли предположить, что то же самое относится и к вложенным классам со статическими функциями?

// Function called by several threads
int someFunc(int a, int b)
{
  struct nestedStruct
  {
    static int do_something(int& a, int& b)
    {
      a = rand();
      b = rand();
      return a + b;

    }
  };

  return nestedStruct::do_something(a, b);
}

1 Ответ

2 голосов
/ 15 февраля 2012

Внешний someFunc имеет свой собственный фрейм стека, поэтому, если rand является потокобезопасным (я не уверен, что это так), то и внешняя функция, и вложенная статическая функция в порядке.

...