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?