gpt4 book ai didi

c++ - C++中的多线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:07:47 25 4
gpt4 key购买 nike

我有一个名为 MatrixAlt 的类,我正在尝试对一个函数进行多线程处理以在该矩阵上做一些工作。

当我只是在几个函数中实现它时,我的一般方法就奏效了。但是,当我尝试将它引入类方法时,出现错误。

有问题的行(或者它突出显示的地方)是从末尾开始的 4 行,错误消息在它上面的注释中。

#include <vector>
#include <future>
#include <thread>

class MatrixAlt
{
public:
MatrixAlt();

// initilaise the matrix to constant value for each entry
void function01(size_t maxThreads);
void function02(size_t threadIndex);

};

MatrixAlt::MatrixAlt()
{

}

void MatrixAlt::function02(size_t threadIndex)
{
// do some stuff
return;

}


void MatrixAlt::function01(size_t maxThreads)
{

// To control async threads and their results
std::vector<std::future<bool>> threadsIssued;

// now loop through all the threads and orchestrate the work to be done
for (size_t threadIndex = 0; threadIndex < maxThreads; ++threadIndex)
{
// line 42 gives error:
// 'MatrixAlt::function02': non-standard syntax; use '&' to create a pointer to member
// 'std::async': no matching overloaded function found
threadsIssued.push_back(std::async(function02, threadIndex));
}
return;
}

最佳答案

你的第一个问题就这样解决了

threadsIssued.push_back(std::async(&MatrixAlt::function02, this, threadIndex));

您需要指定确切的 class::function 并获取其地址您为其执行此操作的类的实例,然后是参数。

你还没有看到的第二个问题是这一行

 std::vector<std::future<bool>> threadsIssued;

所有这些 future 都将在作用域退出中消失,就像雨中的泪水。是时候销毁了。

《银翼 killer 》之后自由。

All those moments will be lost in time, like tears in rain. Time to die.

关于c++ - C++中的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46960341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com