尝试使用pthread_create时出错

时间:2017-05-27 09:13:58

标签: c pthreads

我尝试使用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..
}

1 个答案:

答案 0 :(得分:0)

给你的函数赋予的参数应该是一个指针,因为这是在C中泛化类型的唯一方法。当调用pthread_create时,你将指针传递给争论。请参阅this page,当您传递整个结构变量时,编译器期望类型为void *的参数 - 指针。