pthread_create를 통해 배열 요소를 매개 변수로 전달할 때 몇 가지 문제가 있습니다.pthread_create를 통해 배열 (struct) 요소 전달
struct threadInfo {
int threadNumber;
int sleepTime;
};
제가 (a 함수) 배열을 초기화 이런 :
I이 구조체가 잠시 루프에이어서
struct threadInfo info[1];
를 I 이렇게 :
int i = 0;
...
while (i < 2) {
pthread_mutex_lock(&countMutex);
if (threadsCount < MAX_THREAD) {
info[i].threadNumber = ++threadsCount;
pthread_mutex_unlock(&countMutex);
info[i].sleepTime = rand() % (10 + 1 - 1) + 1;
pthread_create(&threads[i], NULL, lawine, &info[i]);
i++;
}
else {
pthread_mutex_unlock(&countMutex);
break;
}
}
threadsCount는 전역 변수입니다.
처음에는 잘 돌아갑니다 (info [0]). 하지만 두 번째 라운드 (정보 1) 값이 잘못되었습니다. the output
도와 주시겠습니까?
게시하지 마십시오 링크로 출력을하고, 그렇지 않은 : 그것은 당신이 지금처럼 할당해야 요소의 수, 그래서 당신이 두 요소가하려는 경우 (따라서 및
info[1]
에 액세스 할 수) 텍스트 사진을 게시하지만 텍스트를 게시하십시오. –배열을 (함수에서) 어떻게 초기화합니까? struct threadInfo info [];'*? –
버그가 발생하면 [짧은, 자체 포함, 올바른 (컴파일 가능), 예] (http://sscce.org/)가 될 때까지 코드에서 필수적이지 않은 것을 잘라내는 것이 좋습니다. (a) 잘못 이해 한 것을 더 명확하게보고 이해할 수 있고 (b) 쉽게 파일로 저장하고 컴파일하고 자신을 도우려고 할 때 사용할 수있는 프로그램을 다른 사람들과 공유 할 수 있어야합니다. – ArjunShankar