对于下面的代码片段,我一直收到调用错误C6272。我尝试了多种方法-使用ref传递,不使用ref传递,甚至作为简单线程进行测试。对于上下文,成员函数是一个将两个稀疏矩阵相乘并将它们添加到链表的函数。如果不使用线程,该函数工作正常,但线程返回错误。
mutex m;
vector<thread> a;
for (int q = 0; q < rhs.num_columns_; q++) {
a.push_back(thread(&SparseMatrix::mul_node, rhs_rows, lhs_rows, q, ref(newMatrix), ref(m)));
}
for (thread& t : a) {
t.join();
}
穆尔_node函数的声明
void SparseMatrix::mul_node(vector<vector<int>> rhs, vector<vector<int>> lhs, int pos_rhs, row_node* &newMatrix, mutex &m) const`
我还没能找到解决上述问题的方法,请让我知道到底是什么导致了这个问题,我可以如何解决它?谢谢
1条答案
按热度按时间ykejflvf1#
因为成员函数不是
static
,所以你也需要将一个指向SparseMatrix
的 * instance * 的指针传递给std::thread
构造函数。简化示例:
这里
10
和20
作为参数传递给this->thread_func
。