J'essaie d'apprendre sur C multithreading, et j'ai vu quelques choses rares. Je comprends que passer des paramètres à un thread doit être fait avec des pointeurs. J'ai trouvé un exemple que je ne comprends pas. Je vais copier les lignes pertinentes:Comment passer des paramètres à un thread dans c multithread correctement
pthread_t tid[MAX_THREADS]
int n_veg
pthread_create(&tid[n],NULL,caracter,(void *)n_veg)
caracter est évidemment une fonction pré-déclarée.
Maintenant, pourquoi utilisons-nous un casting de pointeur void au lieu d'un casting de pointeur int? Y a-t-il une différence pertinente?
Deuxièmement, pourquoi utilisons-nous un moulage de pointeur en premier lieu? Ne pouvons-nous pas utiliser "& n_veg" comme avec le premier paramètre?
Merci d'avance.
Donc, y a-t-il une réelle différence entre passer un vrai pointeur ou lancer la valeur si on travaille avec des entiers? Et, pourquoi * (int *) n_veg? Je suis désolé si cette deuxième question est stupide, c'est ma deuxième année sur la programmation et j'avais seulement utilisé java jusqu'à cette semaine:/ – bluehallu
@Hallucynogenyc: Oui il y a. Si vous passez dans un vrai pointeur, vous pouvez changer la valeur d'origine en utilisant le pointeur.À propos de '* (int *) n_veg': pour utiliser un 'void *', vous devez convertir un type réel, d'où le '(int *)', puis le '*' déréférence le pointeur pour obtenir la valeur. – casablanca
Tout est clair. Merci beaucoup! – bluehallu