我在编写的程序中遇到问题。我有返回指针的函数,在 main() 中我想在线程中运行它们。
我能够在线程中执行函数:
double* SplitFirstArray_1st(double *arr0){
const UI arrSize = baseElements/4;
std::cout << "\n1st split: \n";
double *arrSplited1=nullptr;
arrSplited1 = new double [arrSize];
for(UI i=0; i<arrSize; i++){
arrSplited1 = arr0;
}
for(UI j=0; j< arrSize; ++j){
std::cout << arrSplited1[j] << " ";
}
return arrSplited1;
delete [] arrSplited1, arr0;
在主函数中
std::thread _th1(SplitFirstArray_1st, rootArr);
_th1.join();
以上不是我要的。我有另一个指针:
*arrTh1=nullptr;
我想在一个线程中使用它,这样它就会被分配我的函数 SplitFirstArray_1st 返回的值
arrTh1 = SplitFirstArray_1st(xxx);
这样的 Action 是否可以一步步执行?
最佳答案
不返回变量,传递一个指向变量的指针并将值也设置在这个点上。
即:
void set_int(int* toset) {
*toset = 4;
}
这适用于已经是指针的东西:
void set_ptr(int** toset) {
*toset = new int[4];
// ...
*toset[0] = 2;
}
如果函数返回,您可以知道数据可以安全使用。
完全不相关的注释:
return foo;
// No point placing code here unless you used goto as it won't get executed.
// Also: don't use goto.
}
关于C++ 线程和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54392857/