在C++中使用pthread庫創建線程時,線程沒有返回值的概念。通常情況下,可以通過將返回值存儲在一個共享的變量中來實現線程返回值的獲取。
以下是一種實現方式:
在創建線程時,將一個指向共享變量的指針傳遞給線程函數作為參數。
在線程函數中,將計算得到的返回值存儲在共享變量中。
在主線程中,等待線程結束后,從共享變量中獲取返回值。
下面是一個簡單的示例代碼:
#include <iostream>
#include <pthread.h>
// 共享變量
int result;
// 線程函數
void* threadFunc(void* arg) {
int* presult = static_cast<int*>(arg);
// 計算返回值
*presult = 42;
pthread_exit(NULL);
}
int main() {
pthread_t tid;
// 創建線程,傳遞共享變量result的地址作為參數
pthread_create(&tid, NULL, threadFunc, &result);
// 等待線程結束
pthread_join(tid, NULL);
// 輸出返回值
std::cout << "Thread returned: " << result << std::endl;
return 0;
}
在這個示例中,線程函數threadFunc計算了返回值42,并將其存儲在共享變量result中。在主線程中,使用pthread_join函數等待線程結束后,從result中獲取返回值并輸出。