C의 스레드에 여러 값을 반환 할 때 오류 발생

강도질

여러 개의 스레드를 설정했는데 각 스레드는 여러 값으로 채워지고 DB에 쿼리를 만들고 여러 값을 반환해야합니다.

단일 스레드는 올바른 값을 표시 할 수 있지만 주 함수에 값을 반환 할 때 문제가 발생했습니다.

주요 기능은 다음과 같습니다.

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.

win10에서 mingw64로 컴파일하면 잘 작동하는 것 같지만 어떻게 든 32 비트로 컴파일해야합니다. 내 IDE는 mingw64 다르다, 나는 링커를 추가했다, Codeblocks입니다 MinGW\lib\libpthread_s.dll.a그리고 MinGW\lib\libpthread.a나는 mingw32로가 컴파일 할 때. 문제가 될 수 있는지 모르겠어요? 어떻게 고칠 수 있습니까?

강도질

값을 반환하는 방식은 실제로 문제가되지 않았습니다. 내가 사용한 도서관의 문제였습니다. 그래서 Mingw 설치 관리자 (기본적으로 설치되어야 함)를 사용하여 min3gw2-libpthread...라이브러리 를 다시 설치합니다 . 그리고 그것은 작동했습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python의 정의에 True / False 값을 반환하려고 할 때 오류 발생

분류에서Dev

PHP에서 AJAX 함수가 반환 한 여러 값을 표시 할 때 오류 발생

분류에서Dev

여러 스레드의 목록 상자에 항목을 추가 할 때 오류 발생

분류에서Dev

mode.evaluate의 Keras 신경망에서 여러 메트릭의 값을 반환하려고 할 때 오류가 발생합니다.

분류에서Dev

C ++에서 구조체를 반환 할 때 여러 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

Index (Match)를 사용하여 시간 값을 반환 할 때 오류 발생

분류에서Dev

handle_call 값을 반환 할 때 case_clause에서 오류 발생

분류에서Dev

Python과 함께 목록 이해를 사용하여 두 개의 출력을 반환 할 때 오류 발생 : "포장을 풀기에 충분하지 않은 값"

분류에서Dev

JFrame에서 여러 패널을 정렬 할 때 오류 발생

분류에서Dev

여러 레코드 삽입을 수행 할 때 오류가 발생 함

분류에서Dev

여러 레코드 삽입을 수행 할 때 오류가 발생 함

분류에서Dev

babel을 사용하여 react jsx 코드를 변환 할 때 오류 발생

분류에서Dev

Delegate의 반환 값이 C #에서 처리되지 않을 때 컴파일러 오류가 발생하지 않는 이유는 무엇입니까?

분류에서Dev

여러 쿼리를 반환하려고 할 때 Open DataReader 오류 발생

분류에서Dev

지도 삽입의 반환 값을 저장하려고 할 때 오류가 발생했습니다.

분류에서Dev

C #에서 문자열을 double로 변환 할 때 오류 발생

분류에서Dev

R의 dplyr 함수에 여러 인수를 전달할 때 오류 발생

분류에서Dev

R의 dplyr 함수에 여러 인수를 전달할 때 오류 발생

분류에서Dev

C # NET 4.0에서 Stream.Write를 여러 번 시도 할 때 오류 발생

분류에서Dev

값을 반환하려고 할 때 두 가지 오류가 발생합니다.

분류에서Dev

float 배열을 반환 할 때 오류가 발생합니다.

분류에서Dev

-1을 반환 할 때 오류 255가 발생하는 이유

분류에서Dev

VB.Net을 C #으로 변환 할 때 오류 발생

분류에서Dev

xmlrpc 및 vb.net을 사용하여 워드 프레스에 게시 할 때 오류 발생

분류에서Dev

Selenium에서 창 전환을 시도 할 때 오류 발생

분류에서Dev

PHP에서 연관 배열을 반복 할 때 오류 발생

분류에서Dev

TypeScript의 상태에서 값을 분해 할 때 오류가 발생합니다.

분류에서Dev

Java의 C 드라이브에서 파일을 검색 할 때 오류 발생

분류에서Dev

C # 코드를 사용하여 WSP 파일을 업그레이드 할 때 오류가 발생 함

Related 관련 기사

  1. 1

    Python의 정의에 True / False 값을 반환하려고 할 때 오류 발생

  2. 2

    PHP에서 AJAX 함수가 반환 한 여러 값을 표시 할 때 오류 발생

  3. 3

    여러 스레드의 목록 상자에 항목을 추가 할 때 오류 발생

  4. 4

    mode.evaluate의 Keras 신경망에서 여러 메트릭의 값을 반환하려고 할 때 오류가 발생합니다.

  5. 5

    C ++에서 구조체를 반환 할 때 여러 오류가 발생하는 이유는 무엇입니까?

  6. 6

    Index (Match)를 사용하여 시간 값을 반환 할 때 오류 발생

  7. 7

    handle_call 값을 반환 할 때 case_clause에서 오류 발생

  8. 8

    Python과 함께 목록 이해를 사용하여 두 개의 출력을 반환 할 때 오류 발생 : "포장을 풀기에 충분하지 않은 값"

  9. 9

    JFrame에서 여러 패널을 정렬 할 때 오류 발생

  10. 10

    여러 레코드 삽입을 수행 할 때 오류가 발생 함

  11. 11

    여러 레코드 삽입을 수행 할 때 오류가 발생 함

  12. 12

    babel을 사용하여 react jsx 코드를 변환 할 때 오류 발생

  13. 13

    Delegate의 반환 값이 C #에서 처리되지 않을 때 컴파일러 오류가 발생하지 않는 이유는 무엇입니까?

  14. 14

    여러 쿼리를 반환하려고 할 때 Open DataReader 오류 발생

  15. 15

    지도 삽입의 반환 값을 저장하려고 할 때 오류가 발생했습니다.

  16. 16

    C #에서 문자열을 double로 변환 할 때 오류 발생

  17. 17

    R의 dplyr 함수에 여러 인수를 전달할 때 오류 발생

  18. 18

    R의 dplyr 함수에 여러 인수를 전달할 때 오류 발생

  19. 19

    C # NET 4.0에서 Stream.Write를 여러 번 시도 할 때 오류 발생

  20. 20

    값을 반환하려고 할 때 두 가지 오류가 발생합니다.

  21. 21

    float 배열을 반환 할 때 오류가 발생합니다.

  22. 22

    -1을 반환 할 때 오류 255가 발생하는 이유

  23. 23

    VB.Net을 C #으로 변환 할 때 오류 발생

  24. 24

    xmlrpc 및 vb.net을 사용하여 워드 프레스에 게시 할 때 오류 발생

  25. 25

    Selenium에서 창 전환을 시도 할 때 오류 발생

  26. 26

    PHP에서 연관 배열을 반복 할 때 오류 발생

  27. 27

    TypeScript의 상태에서 값을 분해 할 때 오류가 발생합니다.

  28. 28

    Java의 C 드라이브에서 파일을 검색 할 때 오류 발생

  29. 29

    C # 코드를 사용하여 WSP 파일을 업그레이드 할 때 오류가 발생 함

뜨겁다태그

보관