我有這樣的結構:如何從線程函數返回值?
struct data{
int x;
int y;
}
,我有一個線程函數,看起來像這樣:
void *threadFunction(void *item){
data *myData = (data*) item;
int first = 50;
int second = 10;
myData->x = first;
myData->y = second;
return(void*) myData;
}
我調用線程函數像這樣在main():
pthread_create(threadID, NULL, threadFunction, &item);
但是當我想從我的線程函數獲取值回主()使用此:
struct data* returnedItem;
pthread_join(threadID, (void**) returnedItem;
cout << returnedItem->x << returnedItem->y;
我不知道會發生什麼我的計劃似乎只是什麼也不做。它編譯並運行,但它在某處無限循環或只是等待某個東西。我不確定會發生什麼,我只是沒有得到任何迴應。我究竟做錯了什麼?在main()中是否存在缺少pthread_join語句中的值的東西?也許我在聲明中弄亂了論據?
爲什麼要麻煩。如果你只是返回一個指針到原來的事情,只是不停地用'&item' ... –
這是不是你真正的代碼,它甚至不會編譯。 –