将多个参数传递给std :: thread

 江湖小子的美好生活_498_416 发布于 2023-02-13 12:35

我问的是C++ 11标准的库.

假设您有以下功能:

void func1(int a, int b, ObjA c, ObjB d){
    //blahblah implementation
}

int main(int argc, char* argv[]){
    std::thread(func1, /*what do do here??*/);
}

你如何将所有这些参数传递给线程?我尝试列出如下参数:

std::thread(func1, a,b,c,d);

但它抱怨说没有这样的构造函数.解决这个问题的一种方法是定义一个包装参数的结构,但还有另一种方法吗?

1 个回答
  • 你真的只是传递它们std::thread(func1,a,b,c,d);应该编译如果对象存在,但它是错误的另一个原因.由于没有创建对象,因此无法加入或分离线程,程序将无法正常工作.因为它是一个临时的析构函数被立即调用,因为线程没有被连接或分离但是std::terminate被调用.在温度被破坏之前,你可能std::joinstd::detach它可以std::thread(func1,a,b,c,d).join();//or detach.

    这是应该怎么做的.

    std::thread t(func1,a,b,c,d);
    t.join();  
    

    如果你不知道连接和分离之间的区别,你也可以分离线程,读取线程.

    2023-02-13 12:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有