我正在尝试在课程中使用线程,但一直遇到一个让我陷入困境的错误。
我正在尝试使用它:
pthread_create(&pro, NULL, producer, (void *) &temp);
pthread_create(&con, NULL, consumer, (void *) &temp);
调用这些函数:
void producer (void *t)
void consumer (void *t)
我从导师给我的例子中学习了这段代码,但我不知道给我的例子是否有效。
我得到的警告是:
task2.c:37:5: warning: passing argument 3 of ‘pthread_create’ from
incompatible pointer type [enabled by default]
pthread_create(&con, NULL, consumer, (void *) &temp);
^ In file included from task2.c:3:0:
/usr/include/pthread.h:244:12: note: expected ‘void * (*)(void *)’ but
argument is of type ‘void (*)(void*)’
我在编译时使用gcc -pthread
,我也收到producer()
函数的类似警告。这是我第一次尝试线程化,因此pthread_create()
的使用对我来说是新的。
有人可以帮助澄清这个问题吗?
答案 0 :(得分:4)
您的功能与您在错误中所述的void * (*)(void *)
预期类型不符。
尝试更改您的功能以返回void *
答案 1 :(得分:1)
我应该宣布我的职能为;
void *producer (void *t);
我的第四个论点不需要(void *)。
答案 2 :(得分:-1)
尝试使用gcc -lpthread
进行编译