gpt4 book ai didi

c - C中的信号量数组和相互赋值

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:37 38 4
gpt4 key购买 nike

我正在尝试在 C 中使用信号量。

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

和局部sem_t MyArray[2];在一个函数中。

我初始化我的信号量。

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

我想将数组中的 5 个信号量中的 2 个分配给 MyArray。所以 MyArrayMyArray+ 1 将是例如 array+3array+1 并且这是相同的地址.

最佳答案

如果不了解 sem_t 的内部结构,分配或复制 sem_t 对象的语义就不清楚了。

  • 如果 sem_t 是一个简单的句柄或指针,那么只需获取一个副本,两个副本将引用相同信号量。

    <
  • 如果 sem_t 是 POD 结构,则可以逐字节复制,但复制将是不同的独立的 信号量。

  • 如果 sem_t 不是 POD 并且包含指针,copyinmg 是重要的。

您可能真正想要的是 MyArray 通过 sem_t* 类型引用 array:

// By initialisation
sem_t* MyArray[2] = { &array[3], &array[1] } ;

// By assignment
sem_t* MyArray[2] ;

MyArray[0] = &array[3] ;
MyArray[1] = &array[1] ;

关于c - C中的信号量数组和相互赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27366544/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com