繁体   English   中英

我是否正确使用结构?

[英]Am I using structs correctly?

我目前正在用C学习多线程。 对于此任务,我必须制作一个多线程的Conway的生活游戏。 该程序在执行时会接收一堆参数。 这是执行之前需要接受的所有变量:

./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;

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

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM