尝试使用pthread_create时出错

问题描述:

我试图使用pthread_create创建一个将运行函数的线程,但我得到的是incompatible type for argument 4 of pthread_create。 我见过关于这个问题的一些帖子,但没有提供的解决方案没有为我解决它。尝试使用pthread_create时出错

下面是相关的代码:

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

第四个参数需要是一个指针 - 你的不是。 – tofro

+0

@tofro明白了。谢谢。 – Noam

即是考虑到你的函数预期为一个指针,因为这是概括类型C.当调用pthread_create的唯一途径的论点您将指针传递给参数。请参阅this page,编译器期望在您传递整个结构变量的同时指定类型为void *的指针。