Variáveis Estáticas e Threads (C)
Eu sei que declarar uma variável estática dentro de uma função em C significa que essa variável mantém seu estado entre as invocações de função. No contexto de encadeamentos, isso resultará na variável mantendo seu estado em vários encadeamentos ou tendo um estado separadoentre cada segmento?
Aqui está uma questão anterior do exame em papel que estou me esforçando para responder:
A seguinte função C destina-se a ser usada para alocar identificadores exclusivos (UIDs) para seus chamadores:
get_uid()
{
static int i = 0;
return i++;
}
Explique de que maneira o get_uid () pode funcionar incorretamente em um ambiente onde ele está sendo chamado por vários threads. Usando um cenário de exemplo específico, forneça detalhes específicos sobre por que e como esse comportamento incorreto pode ocorrer.
No momento, estou assumindo que cada segmento tem um estado separado para a variável, mas não tenho certeza se isso está correto ou se a resposta está mais relacionada à falta de exclusão mútua. Se esse for o caso, então como os semáforos podem ser implementados neste exemplo?