c++ - 为什么线程不接受这个输入?
问题描述
我正在做一个使用线程对一些矩阵求和的项目,但是在创建线程并添加参数时,它总是显示相同的错误。有任何想法吗?
void sum(std::vector <double>& matrix, std::vector <double>& other) {
for (auto i = 0; i < 15; i++) {
matrix[i] += other[i];
}
}
这是线程应该做的操作。
std::vector <double>* mat1 = new std::vector <double>[15];
std::vector <double>* mat2 = new std::vector <double>[15];
std::vector <std::thread*> threads;
for (int j = 0; j < 15; j++) {
sum(mat1[j], mat2[j]); //this works;
threads.push_back(new std::thread(sum,mat1[j],mat2[j])); //this dont why?;
}
提前致谢
解决方案
要编译它,请更改:
std::thread(sum,mat1[j],mat2[j])
至:
std::thread(sum, std::ref(mat1[j]), std::ref(mat2[j]))
示例:https ://godbolt.org/z/Ek-cnm
但是除了编译之外,您的问题和代码还有多个问题,请听听其他人在评论中所说的话。
推荐阅读
- php - Cakephp 3 模型查找失败并包含匿名函数
- c# - Azure 服务总线队列如何在 HTTPS 模式下向客户端传递消息
- laravel-5 - TypeError:this.cards.filter 不是函数
- c# - 在 CI 中为 Web 应用程序 (WCF) 等类库获取发布工件
- android - 查看未找到名称 RNSketchCanvas 的配置
- python - 如何遍历单个数据框列以计算有多少不同的值?
- ios - 将进度条与时间联系起来
- php - 结果按其他sql查询结果排序
- angular - 将文件从 WebAPI 下载到 Angular 6 应用程序
- android - 如何让一个线程等到其他线程完成