2016-09-22 3 views
0

Ich habe Probleme beim Erstellen eines Threads innerhalb eines Threads. Ich muss thread1 erstellen und thread1 tut "etwas" sowie create thread2, die etwas anderes tun.Wie erstellen Sie einen Thread, der einen anderen Thread in C-Programmierung erstellt?

meinen Code:

#include <pthread.h> 
    #include <stdio.h> 
    #include <errno.h> 
    #include <stdlib.h> 
    #include <unistd.h> 

void *msg1(void *ignored) 
{ 

void *msg2(void *ignored) 
{ 
printf("this is thread2"); 
} 


pthread_t thread; 
int thread2; 
thread2 = pthread_create(&thread, NULL, msg2, NULL); 

return 0; 
} 



int main() 
{ 
pthread_t thread; 
int thread1; 
thread1 = pthread_create(&thread, NULL, msg1, NULL); 
return 1; 


} 

Antwort

3

Fäden von innen ein Gewinde Rückruf Erstellen unterscheidet sich nicht von ihnen aus dem Haupt-Thread zu schaffen. Natürlich wird jeder Thread eine eigene Callback-Funktion haben - die mit dem gegebenen Format für Pthreads, void* func (void*) deklariert ist.

Aus unbekannten Gründen versuchen Sie, eine Funktion in einer anderen Funktion zu deklarieren. Das macht keinen Sinn und ist nicht erlaubt in C. Threads oder keine Threads.

Wenn Sie den Umfang des zweiten Threads einschränken möchten, dann legen Sie beide Thread-Callbacks in einem eigenen Modul ab und nehmen Sie die zweite Callback-Funktion static vor. Es ist ein sehr grundlegender Programmentwurf - etwas, das ich empfehlen würde, lange bevor ich Multithreading nehme.

+2

Technisch können zwei Threads, die das gleiche Verhalten haben sollten, natürlich die gleiche Thread-Funktion ausführen. – unwind

Verwandte Themen