我知道在C语言中在函数内声明一个静态变量意味着该变量会保留其状态,即在函数调用之间保持不变。在线程的上下文中,这是否意味着该变量将在多个线程之间保留其状态,还是在每个线程之间具有单独的状态?
以下是一道过去试卷题,我很难回答:
以下C函数旨在为其调用者分配唯一标识符(UID):
get_uid() { static int i = 0; return i++; }
解释在多线程环境下,get_uid()可能出现什么错误。使用具体的示例场景,详细说明为什么会发生这种错误以及如何发生。
目前我假设每个线程都有一个独立的变量状态,但我不确定这是否正确,或者答案更多地与缺乏互斥有关。如果是这样,那么在这个例子中如何实现信号量?