У меня небольшая проблема с этой проблемой.У меня есть массив, который содержит 2 структуры.Мне нужно передать этот массив в функцию потока и быть в состоянии получить доступ и манипулировать обе структуры в этом массиве.Все примеры, которые я просмотрел и нашел, обычно передают каждый элемент массива в pthread_create, но в контексте моей программы я могу одновременно вызывать только один экземпляр pthread_create, поэтому я не могу передать каждый элемент в массиве по одномуодним.Вот упрощенный код, который я сейчас рассматриваю (дайте мне знать, если вам нужна более важная информация):
typedef struct foo
{
int a;
char b[100];
}foo;
void *threadFunction(void *arr);
.
.
.
int main(int argc, char *argv[])
{
foo temp1, temp2;
//Somewhere between here temp1 and temp2 are initialized and filled
foo arr[2];
arr[0] = temp1;
arr[1] = temp2;
pthread_create(&thread, &attr, threadFunction, (void *)arr);
.
.
.
}
void *threadFunction(void *arr)
{
foo *temp = (foo *)malloc(2 * sizeof(foo));
temp = (foo *)arr;
.
.
.
free(temp);
pthread_exit(NULL);
}
Я также пытался просто сказать:
foo *temp = (foo *)arr;
Очевидное решение былоназначить каждый элемент в temp [] элементу в arr [], но это не работает.
В результате у меня есть доступ только к первому элементу в массиве temp, даже если я пытаюсь получить доступtemp [1], что имеет смысл, поскольку не похоже, что я назначаю второй элемент в arr [] чему-либо.
Я уверен, что упускаю что-то очевидное, но не могуКажется, я нашел это, и я не смог найти никакой соответствующей информации об этой конкретной ситуации.Спасибо за любую помощь.