如何在终止线程之前将线程数据复制到数组?
How can I copy thread data to an array before terminating the thread?
我试图从一个方法中复制 C 中的线程数据,该方法使用指向结构类型数组的指针引用线程的结构。
我试图使用“&”符号来获取结构数据,但在这样做时收到了 make 错误。我想在结构类型的线程终止之前复制整个结构的数据。
Person queue[300];
Person statsArray[300];
// the queue contains Person structs that have been given data already
// within another method, prior to calling Leave().
typedef struct
{
struct timeval startChange;
struct timeval endChange;
struct timeval arrive;
int id;
int changingTime;
int storeTime;
int returning;
int numVisits;
int type;
int queuePos;
} Person;
void Leave(int queuePosition)
{
Person *aPerson = &queue[queuePosition];
statsArray[statsArrayIndex] = &aPerson;
statsArrayIndex++;
}
编译时,出现“从类型 'Person ** {aka struct **}'
分配给类型 'Person {aka struct }' 时类型不兼容的错误
根据错误消息,有问题的行是:
statsArray[statsArrayIndex] = &aPerson;
您将 Person**
分配给 Person
。如果你想复制每个结构元素,那么你可能想要:
statsArray[statsArrayIndex] = *aPerson;
请注意,对于大型结构数组,结构复制的开销可能很大。根据您的程序,它可能 better/possible 重新设计您的程序,以便不制作副本而只使用指向它的指针(例如,不要让线程破坏 queue
)。
我试图从一个方法中复制 C 中的线程数据,该方法使用指向结构类型数组的指针引用线程的结构。
我试图使用“&”符号来获取结构数据,但在这样做时收到了 make 错误。我想在结构类型的线程终止之前复制整个结构的数据。
Person queue[300];
Person statsArray[300];
// the queue contains Person structs that have been given data already
// within another method, prior to calling Leave().
typedef struct
{
struct timeval startChange;
struct timeval endChange;
struct timeval arrive;
int id;
int changingTime;
int storeTime;
int returning;
int numVisits;
int type;
int queuePos;
} Person;
void Leave(int queuePosition)
{
Person *aPerson = &queue[queuePosition];
statsArray[statsArrayIndex] = &aPerson;
statsArrayIndex++;
}
编译时,出现“从类型 'Person ** {aka struct **}'
分配给类型 'Person {aka struct }' 时类型不兼容的错误根据错误消息,有问题的行是:
statsArray[statsArrayIndex] = &aPerson;
您将 Person**
分配给 Person
。如果你想复制每个结构元素,那么你可能想要:
statsArray[statsArrayIndex] = *aPerson;
请注意,对于大型结构数组,结构复制的开销可能很大。根据您的程序,它可能 better/possible 重新设计您的程序,以便不制作副本而只使用指向它的指针(例如,不要让线程破坏 queue
)。