我尝试使用pthread_create
来创建一个可以运行某个功能但我得到incompatible type for argument 4 of 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 :(得分:0)
给你的函数赋予的参数应该是一个指针,因为这是在C中泛化类型的唯一方法。当调用pthread_create
时,你将指针传递给争论。请参阅this page,当您传递整个结构变量时,编译器期望类型为void *
的参数 - 指针。