pthreads 튜토리얼 연습의 일환으로 10 개의 스레드를 결합하는 것보다 10 개의 스레드를 만드는 프로그램을 작성했습니다. 프로그램이 실행되고 출력을 인쇄하지만 pthread_join에 대한 첫 번째 호출에서 세그멘테이션 오류가 발생하는 것처럼 보입니다. 왜 이런 일이 일어나고 있는지 모르겠습니다. 나는 웹에서 검색을 시도했지만 대부분의 문제는 잘못된 포인터가 함수에 전달되는 것과 관련이있다. 이 코드가 내 코드와 동일한 문제인지 쉽게 알 수는 없으므로 확실하지 않습니다. 누군가가 나를 도울 수 있다면pthread_join이 seg 오류를 일으켰습니다
, 나는 확실히
코드는 다음과 같습니다 :) 감사하겠습니다 :
#include <stdio.h>
#include <pthread.h>
#define NTHREADS 10
void *thread_function(void *arg)
{
int i;
int *coming = (int*) arg;
for(i=0; i<5; i++)
printf("Hello, World (thread %d)\n", *coming);
return NULL;
}
int main(void)
{
int i;
void *exit_status;
int retVal;
pthread_t pthread_array[NTHREADS];
int randVals[10] = {23,5,17,55,9,47,69,12,71,37};
printf("threads are created\n");
for(i=0; i<10; i++)
{
retVal=pthread_create(&pthread_array[i], NULL, thread_function, &randVals[i]);
printf("pthread_create %d retVal=%d\n", i, retVal);
}
printf("threads are joined\n");
for(i=0; i<10; i++)
{
retVal= pthread_join(pthread_array[i], &exit_status);
printf("pthread_join %d retVal=%d and exit_status=%d\n", i, retVal,
*((int *)exit_status));
}
printf("all threads have ended\n");
return 0;
}
우 ... 그걸 테스트 해 봤어야합니다. – SmalekTF