gpt4 book ai didi

c - 我正确使用结构吗?

转载 作者:行者123 更新时间:2023-11-30 15:02:59 26 4
gpt4 key购买 nike

我目前正在学习 C 语言的多线程。对于这个作业,我必须制作一个多线程康威生命游戏。该程序在执行时接收一堆参数。以下是执行前接受的所有变量:

./gameoflife <width> <height> <seed> <p> <freq> <#worker_threads>

无论如何,为了使其成为多线程,我决定在 #worker_threads 之间垂直分配工作负载。因此每个工作线程都有自己的 widthStart 和 widthEnd 来处理。

这是我的数据结构:

typedef struct {

int width;
int height;
int ** board;

int freq;
int nbThreads;

int * escaped;

} masterStruct;

typedef struct {

int widthStart;
int widthEnd;
int threadID;
masterStruct * master; //this is supposed to be a pointer to the struct above.

}paramStruct;

现在,在我的“threader”线程(负责计算 widthStart 和 widthEnd)中,将 masterStruct 作为参数。在其中,我调用了一组 pthread_creates,并将 paramsStruct 作为参数提供给它们。我希望所有这些新创建的 pthread 都可以访问相同的全局 masterStruct。所以在我的“threader”线程中,我这样声明它:

paramStruct p[workers]; //create as many paramStruct as nbThreads

for (int i = 0; i < workers; i++) {

*(p[i].master) = myStr; //give each thread
...

我的问题是:这是确保所有 pthread 都能访问同一 masterStruct 的正确方法吗?

非常感谢任何帮助。

最佳答案

我认为这是不正确的。 *(p[i].master) = myStr;myStr 复制到某些(我认为是无效的)内存。也许你想要这样:p[i].master = &myStr;.

关于c - 我正确使用结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40897622/

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