gpt4 book ai didi

c++ - 将多个参数传递给线程函数 c++11

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:55 24 4
gpt4 key购买 nike

我有一个线程数组,在 for 中我应该为所有这些循环创建一个线程。

问题是其中一个参数是 std::move(promise_var)另一个是结构。当我尝试编译时,编译给出了一个错误:

error: no matching function for call to ‘std::thread::thread(void (&)(Function), Structure [nNumThreads], std::remove_reference<std::promise<const char*>&>::type)

所以,这是代码的简化版本...

func(struct Structure, std::promise<const char *> && v_Promise){
//doing work
}

main(){
std::thread a_Threads[5];

for(int8_t i = 0; i < 5; i++){
a_Threads[i] = std::threads(func, Structure, std::move(v_promise[i]));
}
}

最佳答案

(不添加注释,以便我可以正确附加代码)我完成了您提交的代码,以便它可以编译,并且我可以确认下面的代码可以使用命令 g++ test.cpp -std=c++11 -pthread 正常编译和运行:

#include <iostream>
#include <thread>
#include <future>

using namespace std;

struct Structure{
int el1;
int el2;
};

void func(struct Structure, std::promise<const char *> && v_Promise){
cout<<"Hello"<<endl;
//doing work

}

int main(){
std::thread a_Threads[5];
Structure my_struct;
std::promise<const char*> v_promise;

for(int8_t i = 0; i < 5; i++){

a_Threads[i] = std::thread(func, my_struct, std::move(v_promise));

}
}

请对照此内容与您可能遗漏的任何拼写错误或信息进行交叉引用。

关于c++ - 将多个参数传递给线程函数 c++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37011558/

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