为什么我不能将数组值返回到main函数?

时间:2015-04-15 04:09:08

标签: c++ c multithreading

我在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)]’

线程代码有问题吗?我如何声明正确的语法?我想从函数到主数组获取所有值。

3 个答案:

答案 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++)