gpt4 book ai didi

c - 当我们将一个结构复制到另一个结构时的互斥行为

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:56 24 4
gpt4 key购买 nike

我想知道当我将一个结构复制到另一个结构并且该结构包含互斥元素时会发生什么。结构是:

typedef struct p_copy {
int id;
int salary;
pthread_mutex_t mutex;
} p_copy_t;

比如说,我有一个p_copy_t p1,它的值分配给了所有成员,还有另一个结构p_copy_t p2(初始化为0)。当我这样做时,p2=p1,互斥锁地址是否从 p1 复制到 p2?

谢谢。

最佳答案

当您通过赋值运算符将一个struct 复制到另一个时,您会得到一份对象表示。换句话说,对左侧操作数的影响与

memcpy(&p2, &p1, sizeof(p_copy_t));

,假设 p1p2 确实不同。 pthread_mutex_t 的细节没有记录,但假设它是一个 struct(而不是,例如,一个指针),你会得到该结构的副本内容,而不是其地址。

据我所知,使用任何 pthread_mutex_*() 函数对此类复制的互斥对象进行操作的结果是未定义的。

关于c - 当我们将一个结构复制到另一个结构时的互斥行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35762029/

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