Ich bin 32 bits
von OS ausgeführt. Jetzt gibt der von mir erstellte Thread einen int-Wert zurück, der größer als 4G
sein kann. Wie kann ich diesen Wert von meiner main()
Funktion durch pthread_join()
erhalten? Sieht aus wie in 32 bits
System, (void *)
ist 4 Bytes.Linux, C: Wie kann ich einen Rückgabewert von einem Thread erhalten, der größer als 4G in einem 32-Bit-Betriebssystem ist?
#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
void* thread_function(void)
{
uint64_t nbytes = 0;
//assign values to nbytes, it could be larger than 4G.
return (void *)nbytes;
}
int main()
{
pthread_t thread_id;
uint64_t nbytes;
pthread_create (&thread_id, NULL, &thread_function, NULL);
pthread_join(thread_id,(void**)&nbytes);
}
Warum senden Sie '& nbytes' nicht als Ihr NULL-Argument an' pthread_create' und einfach den Wert über die Adresse in Ihrer Funktion setzen und setzen? – WhozCraig
Zuerst ist Ihre 'thread_function' vom falschen Typ. Es sollte Argumente brauchen. Jetzt rate mal was? Sie können diese Argumente verwenden, um Werte hin und her zu übergeben. Und der Rückgabetyp "void *" ist eigentlich nicht dazu bestimmt, an Nicht-Zeigertypen zu übergeben. –