C中的信号量数组和相互分配

C中的信号量数组和相互分配

本文介绍了C中的信号量数组和相互分配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在C语言中使用信号量.

I am trying to use semaphores in C.

我有全局变量:`sem_t array [5];'

I have global variable: `sem_t array[5];'

和函数中的本地 sem_t MyArray [2]; .

我初始化信号灯.

for(i = 0; i < 5; i++)
    sem_init(&array[i], 0, 1);

我想将5个信号量中的2个从数组分配给MyArray.因此, MyArray MyArray + 1 例如将是 array + 3 array + 1 ,并且它们是相同的地址

I want to assign 2 of 5 semaphores from array to MyArray. So MyArray and MyArray+ 1 will be for instance array+3 and array+1 and this are the same addresses.

推荐答案

而不是副本,请尝试使用指向原始图片的指针

instead of a copy, try using pointers to the originals

sem_t* MyArray[2];

然后只需分配 MyArray [0] =& array [1]; 或任何您想要的

then just assign MyArray[0] = &array[1]; or whatever one you want

然后像 sem_wait(MyArray [0]); 一样使用它,这与您原来的 sem_wait(& array [1]); ,因为MyArray已经基于指针.

then use it like sem_wait(MyArray[0]); this is different than your original array which would be sem_wait(&array[1]); because the MyArray is already pointer based.

这篇关于C中的信号量数组和相互分配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 07:42