2017-05-27 6 views
0

Ich versuche pthread_create zu verwenden, um einen Thread zu erstellen, der eine Funktion ausführen wird, aber ich bekomme incompatible type for argument 4 of pthread_create. Ich habe einige Posts über dieses Problem gesehen, aber keine der dort angebotenen Lösungen hat es für mich nicht gelöst.Fehler beim Versuch, pthread_create zu verwenden

Hier ist der relevante Teil des Codes:

typedef struct { 
    const char *filename; 
    Queue *url_queue; 
} FileReaderArguments; 


void *file_reader(void *args) { 
// function code.. 
} 

void parallel_checker(const char *filename, int number_of_threads) { 
     FileReaderArguments file_reader_arguments = {0}; 
     CollectorArguments collector_arguments = {0}; 
     pthread_t file_reader_thread, collector_thread; 
     // PROBLEMATIC LINE 
      pthread_create(file_reader_thread, NULL, &file_reader, file_reader_arguments); 
     // END OF PROBLEMATIC LINE 
     // more code.. 
} 
+0

Das vierte Argument muss ein Zeiger sein - Yours ist nicht. – tofro

+0

@tofro hat es geschafft. Vielen Dank. – Noam

Antwort

0

Das Argument, auf die Ihrer Funktion gegeben wird erwartet, dass ein Zeiger zu sein, denn das ist der einzige Weg ist, Typen in C zu verallgemeinern Wenn pthread_create Aufruf Sie übergeben die Zeiger an das Argument. Siehe this page, der Compiler erwartet ein Argument vom Typ void * - ein Zeiger - während Sie die gesamte Strukturvariable übergeben.

Verwandte Themen