Statyczne zmienne i wątki (C)

Wiem, że deklarowanie zmiennej statycznej w funkcji w C oznacza, że ​​ta zmienna zachowuje swój stan między wywołaniami funkcji. W kontekście wątków spowoduje to, że zmienna zachowa swój stan w wielu wątkach lub będzie miała odrębny stanmiędzy każdym wątkiem?

Oto pytanie z poprzedniego egzaminu, na które usiłuję odpowiedzieć:

Następująca funkcja C jest przeznaczona do przydzielania unikalnych identyfikatorów (UID) swoim rozmówcom:

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

Wyjaśnij, w jaki sposób get_uid () może działać niepoprawnie w środowisku, w którym jest wywoływany przez wiele wątków. Korzystając ze specyficznego przykładowego scenariusza, podaj szczegółowe informacje na temat przyczyn i sposobu, w jaki takie nieprawidłowe zachowanie może wystąpić.

W tej chwili zakładam, że każdy wątek ma osobny stan dla zmiennej, ale nie jestem pewien, czy jest to poprawne, czy odpowiedź jest bardziej związana z brakiem wzajemnego wykluczenia. Jeśli tak, to w jaki sposób można zaimplementować semafory w tym przykładzie?

questionAnswers(6)

yourAnswerToTheQuestion