function A(int a[])
{
SemLock()
//Some Code....
SemUnlock()
}
假设某个其他线程采用了相同的锁定。因此该功能被阻止。假设许多其他线程调用此函数。一切都将被阻止。解锁后,数据(参数a [])是否会丢失或保留作为参数通过不同的线程传入。如何进行数据排队?
答案 0 :(得分:2)
参数a[]
是特定于线程的(不可共享),因此每个线程都有自己的a[]
副本。当线程创建线程的数据结构时。 a[]
存储在线程的堆栈中。
有一个与每个信号量变量关联的线程队列。
typedef struct {
int count;
queue q; /* queue of threads waiting on this semaphore */
} Semaphore;
[ANSWER]
a[]
不会丢失。