栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

线程参数传递衔接 - C++多线程编程(三)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线程参数传递衔接 - C++多线程编程(三)

传递临时对象作为线程参数

void myprint(const int i, char *buf )
{
    cout << i << endl;   //这里myvar不是主线程中的具体变量的地址了,是一个复制值,没有问题。
    cout << buf << endl; //陷阱1:指针传入参数地址不再是入参的地址了,这里打印是存在问题的。解决                    
                         //办法字符串通过const string& 临时变量作为参数实现数据传递。但是
                         //char型的mybuf什么时候转const string是一个非常重要的问题,是存在
                         //mybuf存在主线程执行完毕,才会出现将数据复制到const string类型的转换
                         //这种方式是不稳定的。方法是在入参是直接通过string(mybuf)方式提前进行
                         //数据转换 
}

int main()
{
    int mvar = 1;
    char buf[] = "Hello world";
    thread myobj(myprint, myvar, mybuf );

    

    myobj.detach();

    return 0;
}

总结,传递过程直接使用赋值传递,不使用引用传递。如果传递类对象,直接使用对象临时构造一个Class()来通过临时对象构建传递到函数中。函数传递收函数接口中使用类的应用方式吸收变量,不是使用临时变量类来吸收类。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/853445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号