Créer une dynamique nombre de threads
Je veux créer un certain nombre de threads spécifié par l'utilisateur. Le code que j'ai écrit est la suivante:
int nhijos = atoi(argv[1]);
thread = malloc(sizeof(pthread_t)*nhijos);
for (i = 0; i < nhijos; i++){
if (pthread_create ( &thread[i], NULL, &hilos_hijos, (void*) &info ) != 0){
perror("Error al crear el hilo. \n");
exit(EXIT_FAILURE);
}
Est-ce correct?
POURQUOI? Pourquoi êtes-vous de la création d'un nombre de threads défini par l'utilisateur? Juste obtenir le nombre de threads qui sont nécessaires pour faire le travail.
parce que l'utilisateur doit spécifier le nombre de threads simultanés... parce que c'est la façon dont nous supposons, pour le programme de ce projet...
parce que l'utilisateur doit spécifier le nombre de threads simultanés... parce que c'est la façon dont nous supposons, pour le programme de ce projet...
OriginalL'auteur Alessandroempire | 2012-06-22
Vous devez vous connecter pour publier un commentaire.
Oui, mais je ferais le suivant:
valider que argc > 1 avant d'appeler atoi(argv[1])
valider que nhijos est un nombre positif et moins d'une fourchette raisonnable. (Dans le cas où l'utilisateur tape 1000000).
valider la valeur de retour de malloc n'est pas null.
pthread_create ne sera pas errno en cas d'échec. Donc perror peut-être pas la bonne fonction à appeler en cas d'échec.
...
OriginalL'auteur selbie
Maintenant compiler thi et exécuter en tant qu'
Donc 3 fil de discussion sera créé
Dans votre code
1> pourquoi vous allez à malloc ?
2> Si la fonction malloc alors pourquoi vous n'allez pas libre ?
u peut me donner quoi l'erreur?
padre.c:12:5: avertissement: ISO C90 interdit de longueur variable tableau "thread_id" padre.c:70:2: warning: passing argument 1 of ‘pthread_create’ from incompatible pointer type /usr/include/pthread.h:225:12: remarque: attendu "pthread_t * restreindre’, mais l'argument est de type ‘pthread_t * *" padre.c:80:2: warning: passing argument 1 of ‘pthread_create’ from incompatible pointer type /usr/include/pthread.h:225:12: remarque: attendu "pthread_t * restreindre’, mais l'argument est de type ‘pthread_t * *" padre.c:89:7: warning: passing argument 1 of ‘pthread_join", fait de nombre entier à partir de pointeur sans un casting
oh en c90 je pense que VLA ne sont pas autorisés dans c99 ces sont autorisés. c'est pourquoi vous obtenez avertissement stackoverflow.com/questions/3082126/...
je vois. bien dans ce cas c'est valable. mal lui donner un essai.
OriginalL'auteur Jeegar Patel