Консультация № 144424
19.09.2008, 20:46
0.00 руб.
0 1 1
В одной книге по Си прочитал, что статические переменные не являются потокочувствительными . Поясните, что это означает.

Обсуждение

Неизвестный
19.09.2008, 21:40
общий
это ответ
Здравствуйте, Warobushek!
Сложно понять что имел ввиду автор.
Врят ли имелись ввиду глобальные статические переменные, которые отличаются от обычных глобальных тем, что к ним нельзя обратиться из другого модуля с помощью extern.
Видимо то, что, если в какой-либо функции используются статическая переменная, например:
int count_calls()
{
static int n = 0;
n++;
return n;
}
то при обращении к этой функции все потоки будут увеличивать "общий" n.
В данном случае поведение аналогично использованию глобальной переменной, за исключением того, что область видимости ограничена функцией (или блоком в функции).
Форма ответа