gpt4 book ai didi

c - 如何在 C 中使用相同的结构创建线程

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

我需要使用完全相同的结构创建 N 个线程,还需要使用一个函数,以便结构更改参数的值。

我尝试使用的结构是这个:

    struct people{
int id;
int attend;
int claim;
int leave;
pthread_t thread;
};

我正在尝试使用的功能是这个:

void execThr(){
struct people p;
p.id=0;
p.attend=1;
p.claim=0;
p.leave=0;
}

最后,主要是:

int main( {
pthread_create(&thread,NULL,execThr,&p);
}

我的问题是,这是正确的吗?如果不是,我如何使用相同的结构创建 N 个线程(使用某种“for 循环”)并为每个线程修改它。

非常感谢。

最佳答案

不,那是不正确的。通过在线程函数内定义结构实例,它对于每个线程函数的堆栈都是本地的。您从 main() 引用不同函数内的局部变量 p 将无法编译。

尝试:

void execThr(void *args)
{
struct people *p = args;
p->id=0;
p->attend=1;
p->claim=0;
p->leave=0;
}

int main(void)
{
struct people p;

pthread_create(&thread, NULL, execThr, &p);

return 0;
}

当然,在线程之间共享数据结构需要大量考虑同步等问题。

关于c - 如何在 C 中使用相同的结构创建线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21552025/

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