将多个值返回到C中的线程时出错

他在那里

我设置了几个线程,每个线程都将填充多个值,并且应该向数据库查询并返回多个值。

单线程可以显示正确的值,但是当它们将值返回到主函数时出了点问题。

主要功能是:

for(int i=0; i<n; i++){
    struct thread_args* args = malloc(sizeof(*args));
    args->str = str;
    args->tri_input = tri_input;
    args->length = length;
    res = pthread_create(&t_id[i], NULL, threads, args);
    if(res != 0)
        printf("Failed to create %d th thread.\n", i);
}

for(int i=0; i<n; i++){
    void *returnRes;
    pthread_join(t_id[i], &returnRes);
    indicesArr[i] = returnRes;
    printf("in main thread, indicesArr[%d].length: %d\n", i, indicesArr[i] -> length);
}

单线程:

void *threads(void *args_){

    struct thread_args *args = (struct thread_args *)args_;
    char* str = args -> str;
    struct IntArrLenArr* indicesArr = NULL;
    indicesArr = malloc(sizeof(*indicesArr));
    int length = args -> length;
    PGconn *dbconn = DBconnect(str);
    *indicesArr = duncitonReturnIndicesArr(dbconn);
    printf("in threads, indicesArr -> length: %d\n", indicesArr->length);
    free(args);
    PQfinish(dbconn);
    return indicesArr;
}

结果如下:

in threads, indicesArr -> length: 0
in threads, indicesArr -> length: 0
in threads, indicesArr -> length: 4
in threads, indicesArr -> length: 0
in threads, indicesArr -> length: 0
in threads, indicesArr -> length: 4
in threads, indicesArr -> length: 4
in threads, indicesArr -> length: 0
in main threads, indicesArr[0].length: -1949512500
in threads, indicesArr -> length: 2
in threads, indicesArr -> length: 4
in threads, indicesArr -> length: 4
in threads, indicesArr -> length: 1
in threads, indicesArr -> length: 4

Process returned -1073741819 (0xC0000005)   execution time : 6.551 s
Press any key to continue.

如果它是由mingw64在win10上编译的,则看起来效果很好,但是我必须以某种方式将其编译为32位。我的IDE是代码块,从mingw64不同,我不得不添加一个链接MinGW\lib\libpthread_s.dll.a,并MinGW\lib\libpthread.a在那里当我的mingw32编译。我不知道这可能是问题吗?我该如何解决?

他在那里

我返回值的方式实际上不是问题。那是我使用的库的问题。因此,我使用Mingw安装管理器(默认情况下应安装)来重新安装min3gw2-libpthread...库。而且有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++将结果从多个线程返回到数组

来自分类Dev

C:如何将多个值从函数返回到main

来自分类Dev

将多个值从Shell脚本返回到C程序

来自分类Dev

在PHP中显示AJAX函数返回的多个值时出错

来自分类Dev

使用线程时将控制权返回到Java中的主程序

来自分类Dev

使用线程时将控制权返回到Java中的主程序

来自分类Dev

将部分视图返回到ajax时出错

来自分类Dev

将值返回到列表中

来自分类Dev

是否可以将引用列的值返回到r中的多个列

来自分类Dev

是否可以将多个值从外部文件返回到Dymola?

来自分类Dev

是否可以将多个值从外部文件返回到Dymola?

来自分类Dev

我应该如何通过Java将值中的unsigned int从Java传递并返回到C / C ++

来自分类Dev

通过在C#Windows应用程序中单击按钮将值返回到网格

来自分类Dev

将SQL查询的值返回到C#中的文本框

来自分类Dev

在RxJava中,在其他线程上订阅时,可以压缩的可观察到的值可以返回到主线程吗?

来自分类Dev

将列表从 QThread 返回到主线程

来自分类Dev

将imacros提取的值返回到javascript中的php

来自分类Dev

将嵌套列表中的值返回到PandasDataFrame

来自分类Dev

将imacros提取的值返回到javascript中的php

来自分类Dev

将数据库查询中的值返回到 LinkedHashMap

来自分类Dev

如何将列中的值从 StarBasic 返回到 Calc

来自分类Dev

将值从C ++程序返回到bash脚本

来自分类Dev

用电子返回多个回调函数中的值时出错

来自分类Dev

使用工厂将数据返回到控制器时出错

来自分类Dev

PHP多线程并将值返回到父线程

来自分类Dev

将序列的值返回到先前的值

来自分类Dev

尝试将True / False值返回给python中的定义时出错

来自分类Dev

从C ++ 11中的线程返回值

来自分类Dev

从C中的线程返回值

Related 相关文章

  1. 1

    C ++将结果从多个线程返回到数组

  2. 2

    C:如何将多个值从函数返回到main

  3. 3

    将多个值从Shell脚本返回到C程序

  4. 4

    在PHP中显示AJAX函数返回的多个值时出错

  5. 5

    使用线程时将控制权返回到Java中的主程序

  6. 6

    使用线程时将控制权返回到Java中的主程序

  7. 7

    将部分视图返回到ajax时出错

  8. 8

    将值返回到列表中

  9. 9

    是否可以将引用列的值返回到r中的多个列

  10. 10

    是否可以将多个值从外部文件返回到Dymola?

  11. 11

    是否可以将多个值从外部文件返回到Dymola?

  12. 12

    我应该如何通过Java将值中的unsigned int从Java传递并返回到C / C ++

  13. 13

    通过在C#Windows应用程序中单击按钮将值返回到网格

  14. 14

    将SQL查询的值返回到C#中的文本框

  15. 15

    在RxJava中,在其他线程上订阅时,可以压缩的可观察到的值可以返回到主线程吗?

  16. 16

    将列表从 QThread 返回到主线程

  17. 17

    将imacros提取的值返回到javascript中的php

  18. 18

    将嵌套列表中的值返回到PandasDataFrame

  19. 19

    将imacros提取的值返回到javascript中的php

  20. 20

    将数据库查询中的值返回到 LinkedHashMap

  21. 21

    如何将列中的值从 StarBasic 返回到 Calc

  22. 22

    将值从C ++程序返回到bash脚本

  23. 23

    用电子返回多个回调函数中的值时出错

  24. 24

    使用工厂将数据返回到控制器时出错

  25. 25

    PHP多线程并将值返回到父线程

  26. 26

    将序列的值返回到先前的值

  27. 27

    尝试将True / False值返回给python中的定义时出错

  28. 28

    从C ++ 11中的线程返回值

  29. 29

    从C中的线程返回值

热门标签

归档