Variables estáticas e hilos de rosca (C)

Sé que declarar una variable estática dentro de una función en C significa que esta variable retiene su estado entre invocaciones de función. En el contexto de los subprocesos, ¿esto resultará en que la variable retenga su estado en varios subprocesos o tenga un estado separado?entre cada hilo?

Aquí hay una pregunta de un examen en el pasado que me cuesta responder:

La siguiente función C está diseñada para asignar identificadores únicos (UID) a sus llamadores:

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

Explique de qué manera get_uid () podría funcionar incorrectamente en un entorno donde varios subprocesos lo llaman. Usando un escenario de ejemplo específico, brinde detalles específicos sobre por qué y cómo podría ocurrir tal comportamiento incorrecto.

En este momento estoy asumiendo que cada hilo tiene un estado separado para la variable, pero no estoy seguro si eso es correcto o si la respuesta tiene más que ver con la falta de exclusión mutua. Si ese es el caso, ¿cómo podrían implementarse los semáforos en este ejemplo?

Respuestas a la pregunta(6)

Su respuesta a la pregunta