[英]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.