当前位置: 首页 > wzjs >正文

洪山网站建设毕业设计网站方向

洪山网站建设,毕业设计网站方向,中国建设银行驻莫斯科网站,南通做网站软件文章目录 一、std::ref的作用二、 使用指针和lambda表达式的好处<br><br>三、模板可变参数与引用折叠&#xff08;一&#xff09;模板可变参数&#xff08;二&#xff09;引用折叠 一、std::ref的作用 在多线程编程中&#xff0c;std::ref是一个非常有用的工具&…

文章目录

  • 一、std::ref`的作用
  • 二、 使用指针和lambda表达式的好处<br><br>
  • 三、模板可变参数与引用折叠
    • (一)模板可变参数
    • (二)引用折叠

一、std::ref`的作用

  在多线程编程中,std::ref是一个非常有用的工具,它允许我们将引用传递给线程函数,而不是传递副本。这在某些情况下可以避免不必要的拷贝,提高效率。例如:

void Print1(size_t n, const std::string& s, std::mutex& m, int& rx);

  如果直接这样传递参数会报错:
  同时在线程函数中对a修改,不会影响外部实参,因为:线程函数参数虽然是引用方式,但其实际引用的是线程栈中的拷贝

// unknown-type std::invoke(_Callable &&,_Ty1 &&,_Types2 &&...) noexcept(<expr>)
std::thread t1(Print1, 100, "hello mutex", std::ref(mtx), std::ref(x));

  这里std::refmtxx的引用传递给了线程函数Print1,而不是它们的副本。如果不使用std::refmtxx将会被拷贝,这可能导致线程间无法正确共享资源。

二、 使用指针和lambda表达式的好处

  在多线程编程中,线程函数的参数传递是一个关键问题。使用指针和lambda表达式可以有效避免引用带来的麻烦。例如,lambda表达式可以捕获上下文变量,并以值或引用的方式传递给线程函数,简化代码并避免引用悬挂或生命周期问题。

void Print(size_t n, size_t j, const std::string& s) {for (size_t i = j; i < j + n; i++) {std::cout << std::this_thread::get_id() << " " << s << ": " << i << std::endl;}
}int main() {std::thread t1(Print, 100, 1, "Thread 1");std::thread t2([=]() {Print(100, 101, "Thread 2");});t1.join();t2.join();return 0;
}

三、模板可变参数与引用折叠

(一)模板可变参数

模板可变参数是C++11引入的一个强大特性,它允许函数接受任意数量和类型的参数。std::thread的构造函数利用了模板可变参数,能够接受任意类型的参数,并将它们转发给线程函数。例如:

template <class F, class... Args>
explicit std::thread(F&& f, Args&&... args);

这里的Args&&... args表示可变参数模板,std::thread会将这些参数转发给线程函数。

(二)引用折叠

引用折叠是C++11中引入的一个机制,用于处理引用的传递和绑定。它的主要规则如下:

• 左值引用折叠:如果一个引用被绑定到一个左值,那么它会被折叠为左值引用。

• 右值引用折叠:如果一个引用被绑定到一个右值,那么它会被折叠为右值引用。

• 混合引用折叠:如果一个引用被绑定到一个左值或右值,那么它会被折叠为左值引用。

引用折叠的作用是确保参数的正确传递,避免不必要的拷贝和悬挂引用问题。例如:

注意:如果是类成员函数作为线程参数时,必须将this作为线程函数参数。


文章转载自:

http://99QhLnMh.bzwxr.cn
http://eKi76O1O.bzwxr.cn
http://1JWK3HRz.bzwxr.cn
http://VAdUgSyv.bzwxr.cn
http://7DnC3m1X.bzwxr.cn
http://OTqqgAZj.bzwxr.cn
http://fXmaUpKt.bzwxr.cn
http://RFB5dJx6.bzwxr.cn
http://HFFIpUZi.bzwxr.cn
http://XLlLAp3W.bzwxr.cn
http://AlqvIFL6.bzwxr.cn
http://Uj4ZX30c.bzwxr.cn
http://xXZ6578R.bzwxr.cn
http://Qt5Y7uwG.bzwxr.cn
http://3fsO7bHX.bzwxr.cn
http://8WsyNLTD.bzwxr.cn
http://P6nYpgOy.bzwxr.cn
http://pubKckVs.bzwxr.cn
http://3ldbpKJb.bzwxr.cn
http://luCmHjVp.bzwxr.cn
http://hvatkPwe.bzwxr.cn
http://6HDgXX5T.bzwxr.cn
http://V9Hmi86V.bzwxr.cn
http://l8EvfCyK.bzwxr.cn
http://bdNYisp7.bzwxr.cn
http://h4IAFxDT.bzwxr.cn
http://BkpEj2X3.bzwxr.cn
http://V9Of4fWo.bzwxr.cn
http://xmyvIs4o.bzwxr.cn
http://HuFg6ZBf.bzwxr.cn
http://www.dtcms.com/wzjs/661940.html

相关文章:

  • 大名县建设局网站网站的seo优化方案
  • 腾讯云搭建网站软件开发公司简介范文大全
  • 网站jsp充值和体现系统怎么做网站建设存在问题整改报告
  • 物流信息网站中国建设网站
  • 织梦首饰网站模板怎样在微信上制作自己的链接
  • 网站开发的技术分类wordpress电子报
  • 网站seo收录qq个人中心官网
  • 南宁企业网站设计公上海建设摩托车官网报价
  • dw网站站点建立后怎么做网站群发手机短信
  • 网站建设贰金手指下拉贰壹网站建设用dw
  • 租房网站建设想用自己电脑做服务器做个网站
  • 李洋网络做网站中国建设银行官网站基金查询
  • 做网站要会什么建设网站银行
  • 外围网站怎么做郑州管家网站托管
  • 新闻系统网站开发dw实训总结报告重庆建设工程造价管理协会
  • 下步我院将建设网站信息保密网站代管理
  • 长春企业建站平台上海旅游网站建设情况
  • 北京建设信源资讯网站官网安徽省建设厅网站怎么进不去
  • 重庆企业网站推广费用html5 微信网站
  • 网站搜索排名高怎么做天津外贸网络推广
  • 公需道德与能力建设培训网站免费网站整站模板下载
  • 北京网站开发怎么做孩子学编程网上课程哪家好
  • 企业网站建设联系方式wordpress ssl部署
  • 行情软件免费下载的网站如何做网站首页关键词
  • 宜黄住房和城乡建设部网站公司装修办公楼
  • ps可以在哪个网站上做兼职做矿产公司的网站
  • 便捷网站建设多少钱wordpress仿站步骤
  • php工具箱是直接做网站的吗网站推广软件免费下载
  • 桂平逗乐游戏招聘网站开发公司网站建设及优化计划书
  • 望京做网站的公司中山东莞网站推广