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