créer de thread - passage d'arguments

Je cherche sur la création de plusieurs threads que chaque thread calcule un nombre premier. Je suis en train de passer un deuxième argument à une fonction à l'aide de fil de créer. Il continue de vomir erreurs.

void* compute_prime (void* arg, void* arg2)
{

voici mon main() à la créer de thread. &primeArray[i] après &max_prime me donne des erreurs.

 for(i=0; i< num_threads; i++)
 {
    primeArray[i]=0;
    printf("creating threads: \n");
    pthread_create(&primes[i],NULL, compute_prime, &max_prime, &primeArray[i]);
    thread_number = i;
    //pthread_create(&primes[i],NULL, compPrime, &max_prime);
 }

 /* join threads */
 for(i=0; i< num_threads; i++)
{
    pthread_join(primes[i], NULL);
    //pthread_join(primes[i], (void*) &prime);
    //pthread_join(primes[i],NULL);
    //printf("\nThread %d produced: %d primes\n",i, prime);
    printf("\nThread %d produced: %d primes\n",i, primeArray[i]);
    sleep(1);
}

l'erreur que j'obtiens est:

myprime.c: In function âmainâ:
myprime.c:123: warning: passing argument 3 of âpthread_createâ from incompatible pointer type
/usr/include/pthread.h:227: note: expected âvoid * (*)(void *)â but argument is of type âvoid * (*)(void *, void *)â
myprime.c:123: error: too many arguments to function âpthread_createâ

Il fonctionne très bien si je prends le deuxième argument.

  • voir la réponse ci-dessous, découvrez également lien pour un bon pthread site de référence.
InformationsquelleAutor | 2012-10-30