Younestae

662 mots 3 pages
Transmission des données à un thread
L'argument de thread est une méthode pratique pour passer des données à un thread. Comme son type est void*, cependant, on ne peut pas passer beaucoup de données directement en l'utilisant. Au lieu de cela, on utilise l'argument de thread pour passer un pointeur vers une structure ou un tableau de données. Une technique couramment utilisée est de définir une structure de données pour chaque argument de thread, qui contient les paramètres attendus par la fonction de thread. En utilisant l'argument de thread, il est facile de réutiliser la même fonction pour différents threads. Ils exécutent alors tous les mêmes traitements mais sur des données différentes

Exemple #include #include /* Paramètres de la fonction print. */ struct char_print_parms { /* Caractère à afficher. */ char character; /* Nombre de fois où il doit être affiché. */ int count; }; /* Affiche un certain nombre de caractères selon le contenu de PARAMETERS, qui est un pointeur vers une struct char_print_parms. */ void* char_print (void* parameters) { /* Effectue un transtypage du pointeur void vers le bon type. */ struct char_print_parms* p = (struct char_print_parms*) parameters; int i; for (i = 0; i < p->count; ++i) printf(“%c”,p->character);

return NULL; } /* Programme principal. */ int main () { pthread_t thread1_id; pthread_t thread2_id; struct char_print_parms thread1_args; struct char_print_parms thread2_args; /* Crée un nouveau thread affichant 30 000 x. */ thread1_args.character = 'x'; thread1_args.count = 30000; pthread_create (&thread1_id, NULL, char_print, &thread1_args); /* Crée un nouveau thread affichant 20 000 'o'. */ thread2_args.character = ‘o’; thread2_args.count = 20000; pthread_create (&thread2_id, NULL, char_print, &thread2_args); return 0; }

Problème : Le thread principal (qui exécute la fonction main) crée les structures passées en paramètre aux threads (thread1_args et thread2_args) comme des variables locales puis transmet des

en relation

  • yattassaye
    402 mots | 2 pages
  • jygtuifiy
    1018 mots | 5 pages
  • Ytvty
    436 mots | 2 pages
  • Uerhenane
    1953 mots | 8 pages
  • Yvain
    764 mots | 4 pages
  • yassine
    323 mots | 2 pages
  • Ityjeh
    292 mots | 2 pages
  • yololife
    521 mots | 3 pages
  • yvain
    4180 mots | 17 pages
  • Yassine
    1567 mots | 7 pages
  • Tenochtitlan
    1227 mots | 5 pages
  • Yvain
    9566 mots | 39 pages
  • yassine
    320 mots | 2 pages
  • yuggikhy
    25723 mots | 103 pages
  • Jenesais
    1403 mots | 6 pages