问题描述
我正在尝试在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中的信号量数组和相互分配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!