Я хочу передать несколько аргументов pthread_create()
, поэтому я создаю struct
, и вот мой код
const struct arg_struct {
mpz_t lower;
mpz_t upper;
};
void* temp(void* args) {
struct arg_struct *arguments = args;
mpz_t lower, upper;
mpz_init_set(lower, arguments->lower);
mpz_init_set(upper, arguments->upper);
gmp_printf("%Zd, %Zd\n", lower, upper);
return NULL;
}
int main(int argc, char* argv[]) {
if (argc < 2) printf("Need at least 2 arguments\n");
pthread_t thread[NTHREADS];
int i = 0;
mpz_t lower, upper;
struct arg_struct args;
// min and thread_idx are some variables defined before.
mpz_set(lower, min);
mpz_set(upper, min);
mpz_add(lower, lower, thread_idx);
args.lower = lower;
args.upper = upper;
while (i < NTHREADS) {
pthread_create(&thread[i], NULL, temp, (void*) &args);
i++;
}
}
Где args.lower = lower;
и args.upper = upper
report error: assignment to expression with array type
, и я не уверен, как правильно это исправить (с типом библиотеки GMP).