C, comment créer un thread en utilisant la fonction pthread_create
Je suis en train de faire un fichier c pour une expédition de la file d'attente qui devient une tâche et de le mettre dans une file d'attente qui est de la liste liée. Pour ce faire, j'ai besoin de créer des threads à l'aide de
pthread_t cThread;
if(pthread_create(&cThread, NULL, work, param)){
perror("ERROR creating thread.");
}
Cependant j'ai besoin de faire une autre fonction qui va en "travail" et "param' variable en tant que paramètres de créer la fonction. Mon ami m'a dit que j'ai juste besoin de mettre le code dans la fonction de travail qui boucle à l'infini de sorte que le fil ne meurt pas.. quelqu'un Peut-il expliquer chaque paramètre se passe dans le pthread_create
fonction - en particulier pour les work
et param
? J'ai cherché sur Google, mais la plupart des tutoriels sont si difficiles à comprendre le concept...
source d'informationauteur Leanne
Vous devez vous connecter pour publier un commentaire.
Les quatre paramètres à
pthread_create
sont, dans l'ordre:Un pointeur vers un
pthread_t
structure, quipthread_create
remplir avec des informations sur le fil qu'il crée.Un pointeur vers un
pthread_attr_t
avec des paramètres pour le thread. Vous pouvez juste passerNULL
la plupart du temps.Une fonction à exécuter dans le thread. La fonction doit retourner
void *
et prendre unevoid *
argument, que vous pouvez utiliser comme bon vous semble. (Par exemple, si vous êtes à partir de plusieurs threads avec la même fonction, vous pouvez utiliser ce paramètre pour les distinguer.)La
void *
que vous voulez démarrer le thread avec. PasserNULL
si vous n'en avez pas besoin.clarifier duskwuff réponse:
work
paramètre est un pointeur de fonction. La fonction doit prendre un argument qui est indiqué comme étant de typevoid *
et la valeur de retourvoid *
.param
devrait être un pointeur vers les données quework
recevrez.Comme un exemple, disons que vous voulez passer deux int pour le travailleur. Ensuite, vous pouvez créer quelque chose comme ceci:
Ensuite votre travail en fonction de convertir le type de pointeur et de saisir le param données:
Vous pouvez faire des trucs plus complexe, comme la création d'une structure avec toutes les données dont vous avez besoin pour passer.