【发布时间】:2021-09-24 07:16:33
【问题描述】:
我正在使用信号量。我有两个线程。第一个线程每两秒执行一次创建动态数组的循环。在循环开始时,它创建动态数组,并最终将其删除。另一方面,一个线程必须写入这个动态数组,显然它已经被创建并且它还没有被删除(即,在创建之后和删除之前)。我不知道如何正确使用信号量。我在哪里做错了?感谢您的帮助!
int *array
int position = 0;
static void *thread_A(void *p_vp_arg)
{
while (1)
{
sem_post(&sem);
array = malloc(1024*sizeof(int));
/* SOME STUFF HERE */
sleep(2);
free(array);
}
}
static void function_B(...){
if(sem_trywait(&sem)){
printf("I can write into the array\n");
array[position] = variable;
position += 1;
}
}
进入主线:
sem_init(&sem, 0, 0)
【问题讨论】: