尝试使用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..
}
答
即是考虑到你的函数预期为一个指针,因为这是概括类型C.当调用pthread_create
的唯一途径的论点您将指针传递给参数。请参阅this page,编译器期望在您传递整个结构变量的同时指定类型为void *
的指针。
第四个参数需要是一个指针 - 你的不是。 – tofro
@tofro明白了。谢谢。 – Noam