为什么线程不接受此输入?

时间:2020-02-15 15:43:33

标签: c++ multithreading

我正在做一个使用线程对矩阵求和的项目,但是在创建线程并添加参数时,它总是显示相同的错误。有什么想法吗?

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?;
}

预先感谢

1 个答案:

答案 0 :(得分:1)

要使其编译,请更改:

{('A', 'A'): 0,
('A', 'B'): 7324,
 ('A', 'C'): 11765,
 ('A', 'D'): 6937,
 ('A', 'E'): 10424,
 ('B', 'A'): 7324,
 ('B', 'B'): 0,
 ('B', 'C'): 17791,
 ('B', 'D'): 3532,
 ('B', 'E'): 5902,
 ('C', 'A'): 11765,
 ('C', 'B'): 17791,
 ('C', 'C'): 0,
 ('C', 'D'): 17184,
 ('C', 'E'): 20608,
 ('D', 'A'): 6937,
 ('D', 'B'): 3532,
 ('D', 'C'): 17184,
 ('D', 'D'): 0,
 ('D', 'E'): 6550,
 ('E', 'A'): 10424,
 ('E', 'B'): 5902,
 ('E', 'C'): 20608,
 ('E', 'D'): 6550,
 ('E', 'E'): 0}

收件人:

std::thread(sum,mat1[j],mat2[j])

示例:https://godbolt.org/z/Ek-cnm

但是您的问题和代码除了要进行编译外,还有很多问题,请听别人在评论中说。