我有2个任务可能同时调用以下函数(fun1)。这个胎面安全吗?我们还需要在fun1中添加锁吗?
char * my_malloc(int size)
{
char *p;
sem_lock(&l1); //locking
p= malloc(size);
sem_unlock(&l1); //unlocking
return p;
}
char * fun1(int size)
{
char *ptr;
ptr = my_malloc(size);
return ptr;
}
答案 0 :(得分:0)
只要他们使用相同的信号量,它应该没问题。
为了清楚起见,我会将锁定代码放在fun1
和fun2
中(但它是个人的)。