我在Linux中创建了一个用于创建线程的主函数,它具有读取该数据的功能。我的主代码包含线程初始化:
主要功能:
int main(int argc , /*no of aruments*/
char *argv[])/*store each argument values*/
{
pthread_t thid[count];
create_thread(argv,count,&thid);
}
和我的功能:
int create_thread(char *argv[],int count , pthread_t **thid)
{
for(index = 1; index <= count; index++)
{
status = pthread_create(&thid[index],NULL,file_op,(void*) mystruct);/*create main threads*/
}
}
我收到了像
这样的错误function.c:: warning: passing argument 1 of ‘pthread_create’ from incompatible pointer type
/usr/include/pthread.h: note: expected ‘pthread_t * __restrict__’ but argument is of type ‘pthread_t **
和
main.c: In function ‘main’:
main.c:: warning: passing argument 3 of ‘create_thread’ from incompatible pointer type
function.c:: note: expected ‘pthread_t **’ but argument is of type ‘pthread_t (*)[(long unsigned int)(count)]’
线程代码有问题吗?我如何声明正确的语法?我想从函数到主数组获取所有值。
答案 0 :(得分:5)
进行两项更改:
create_thread(argv,count,thid);
和
int create_thread(char *argv[],int count , pthread_t *thid)
这会将数组传递给你的函数,它会传递一个指针,指向要由pthread_create更新的其中一个线程ID。
答案 1 :(得分:4)
pthread_create 函数的第一个参数需要pthread_t *
。你传递的是错误的论证类型。
检查出来:pthread_create
答案 2 :(得分:2)
同样create_thread()
正在写thid
数组的末尾。循环应该是
for (index = 0; index < count; index++)