이 같은 구조체가 :스레드 함수에서 값을 반환하려면 어떻게해야합니까?
struct data{
int x;
int y;
}
및 I는 다음과 같습니다 스레드 기능이 있습니다
void *threadFunction(void *item){
data *myData = (data*) item;
int first = 50;
int second = 10;
myData->x = first;
myData->y = second;
return(void*) myData;
}
나는이 같은 스레드 함수를 호출을 주() :
pthread_create(threadID, NULL, threadFunction, &item);
하지만이 값을 사용하여 main()에 다시 쓰레드의 값을 가져 오려고 할 때 :
struct data* returnedItem;
pthread_join(threadID, (void**) returnedItem;
cout << returnedItem->x << returnedItem->y;
내 프로그램이 아무 것도하지 않는 것 같은데 어떻게되는지 모르겠습니다. 컴파일되고 실행되지만 어딘가에 무한 루프되거나 그냥 기다립니다. 전혀 어떤 일이 일어날 지 모르겠다. 나는 어떤 종류의 응답도받지 못한다. 내가 도대체 뭘 잘못하고있는 겁니까? pthread_join 문에서 값을 검색하기 위해 main()에없는 것이 있습니까? 나는 성명서에서 주장을 망쳐 놨 을까?
원래 물건에 대한 포인터를 반환하는 경우'& item'을 계속 사용하십시오 ... –
그건 실제 코드가 아니며 컴파일도되지 않습니다. –