Статические переменные и потоки (C)

Я знаю, что объявление статической переменной внутри функции в C означает, что эта переменная сохраняет свое состояние между вызовами функций. В контексте потоков это приведет к тому, что переменная сохранит свое состояние в нескольких потоках или будет иметь отдельное состояниемежду каждой нитью?

Вот прошлый бумажный экзаменационный вопрос, на который я изо всех сил пытаюсь ответить:

Следующая функция C предназначена для использования уникальных идентификаторов (UID) для ее вызывающих:

get_uid() 
{
static int i = 0;
return i++;
}

Объясните, как get_uid () может работать некорректно в среде, в которой он вызывается несколькими потоками. Используя конкретный пример сценария, подробно опишите, почему и как может происходить такое неправильное поведение.

В настоящий момент я предполагаю, что каждый поток имеет отдельное состояние для переменной, но я не уверен, правильно ли это или ответ больше связан с отсутствием взаимного исключения. Если это так, то как семафоры могут быть реализованы в этом примере?

Ответы на вопрос(6)

Ваш ответ на вопрос