cela pourrait être une requête simple. Lorsque nous créons un thread nous passons le (void *) t comme argument à une fonction PrintHello. Nous copions la valeur dans le thread du pointeur (typacasting to long) dans tid qui est une variable longue à nouveau Je suis confondu avec le paramètre passant. est-ce un passage par référence ou passez par value.over tout est-ce correct? (value *)t
. quelle valeur passe-t-elle exactement?requête sur un programme multithread
long t;
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
void *PrintHello(void *threadid)
{
long tid;
tid = (long)threadid;
s'il vous plaît aidez-moi à éviter ma confusion :(
Ceci est la bonne réponse. Dans ce cas, disons que vous voulez seulement passer une variable scalaire 32/64-bit, alors c'est sûr. La valeur est simplement copiée et vous pouvez lire en toute sécurité quelle que soit la fin de la fonction ou non. – minjang