美文网首页
2019-03-07 C++同步线程std::thread参数传

2019-03-07 C++同步线程std::thread参数传

作者: 韦德爱老詹 | 来源:发表于2019-03-07 16:08 被阅读0次
    void SVD_thread1(grid_map::GridMap& map, double *b, int a );
    void SVD_thread2(grid_map::GridMap& map, double *b, int a );
    
    #函数调用
    {
    std::thread t1(&FiltersDemo::SVD_thread1, this, ref(map), b, a);
    std::thread t2(&FiltersDemo::SVD_thread2, this, ref(map), b, a);
    t1.join();
    t2.join();  //等待线程完成
    }
    

    在一个类里使用多线程调用,可以如上述方式,这比使用pthread类简单许多。使用thread类调用多线程需要注意参数的传递,若是引用,需要写成ref()。
    发现上述的代码会报错,需要进行如下改变:

    void SVD_thread1(grid_map::GridMap& map, void *c, int a ){
    double *b;
    b = (double*) c;
    
    }
    
    #函数调用
    {
    double *b;
    void *c;
    c = b;
    std::thread t1(&FiltersDemo::SVD_thread1, this, ref(map), c, a);
    }
    

    中间数据需要通过void a进行传递,其实际传递的只是一个指针。究其中间需要转换的原因,可能库中没有定义double a的数据类型。

    相关文章

      网友评论

          本文标题:2019-03-07 C++同步线程std::thread参数传

          本文链接:https://www.haomeiwen.com/subject/oxacpqtx.html