簡體   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