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

有做阿里网站的吗太原app开发公司

有做阿里网站的吗,太原app开发公司,北京ui网页设计素材,网站建设推广信息系列文章目录 文章目录 系列文章目录-进程-前言base类线程执行函数结果分析小结#xff0c;行为总结 -c11线程对象创建后既不join()也不detach()的后果-附注代码 -进程 进程是运行着的程序 进程内存空间分配#xff1a;略 如果主进程结束而子进程未结束#xff0c;则Linu…系列文章目录 文章目录 系列文章目录-进程-前言base类线程执行函数结果分析小结行为总结 -c11线程对象创建后既不join()也不detach()的后果-附注代码 -进程 进程是运行着的程序 进程内存空间分配略 如果主进程结束而子进程未结束则Linux内核会将该子进程的父进程ID改为1(init进程) -前言 void funcname(const A v); std::thread(funcname, value); // 即使函数的形参是引用类型也会发生拷贝构造 除非 void funcname(A v); std::thread(funcname, std::ref(value)); // 这样value对象就是主线程中的对象 base类 #include iostream #include threadclass Base { public:int num 1; // 类内初始化Base() { std::cout 默认构造函数Base()运行 this: this id std::this_thread::get_id() std::endl;}Base(const Base b){std::cout 拷贝构造函数Base() this: this id std::this_thread::get_id() std::endl;}~Base(){std::cout 析构函数~Base() this: this id std::this_thread::get_id() std::endl;}void operator()(int num){std::cout 运算符重载子线程执行 this: this id std::this_thread::get_id() std::endl;}void thdjob(int n); };线程执行函数 普通函数void thdjob(int n) {std::cout 子线程执行 std::this_thread::get_id() std::endl; }类的成员函数void Base::thdjob(int n){std::cout 子线程执行 std::this_thread::get_id() std::endl;}结果分析 int main() {Base b;// 在第一个参数为普通函数的情况下引用// 当第一个参数为类的成员函数时则子线程和主线程用的不是同一个对象// 若为引用或地址则为同一个对象std::thread thd(Base::thdjob, b, 4); }小结行为总结 std::thread中即使线程函数的形参是引用类型也会进行对象拷贝std::thread(…)中假定所有实参都为右值void thdjob(const Base b); // 必须是const引用并且会发生无对象拷贝的方式 引用 void thdjob(Base b);// 子线程中的对象b与主线程中的是同一个自然无对象拷贝// 需要确保子线程在使用b时主线程不会将其销毁std::thread th(thdjob, std::ref(b)); // std::ref将b变为引用类型指针 void thdjob(Base* b);// 用地址传递自然都是同一个对象std::thread th(thdjob, b);发生对象拷贝  2次拷贝主线程子线程各一次void thdjob(Base b); std::thread th(thdjob, b);发生两次对象拷贝第一次发生在主线程将b对象拷贝到th第二次发生在子线程将th中的右值对象拷贝到形参默认构造函数Base()运行 this: 0x7ffcd8b7f014 id 139770366710720 ---------- 拷贝构造函数Base() this: 0x558e2431d2c8 id 139770366710720 拷贝构造函数Base() this: 0x7f1ed29fed74 id 139770359445056 this: 0x7f1ed29fed74子线程执行1397703594450561次拷贝// 子线程发生一次对象拷贝 void thdjob(Base b); // std::ref 主线程无拷贝 std::thread th(thdjob, std::ref(b));默认构造函数Base()运行 this: 0x7ffd5c67123c id 139786634453952 ---------- 拷贝构造函数Base() this: 0x7f229c3fed74 id 139786627053120 this: 0x7f229c3fed74子线程执行139786627053120※推荐的方式※// 子线程无拷贝 void thdjob(const Base b); // 主线程进行1次对象拷贝 std::thread th(thdjob, b);默认构造函数Base()运行 this: 0x7ffd26fb3764 id 140183106712512 ---------- 拷贝构造函数Base() this: 0x563e24eee2c8 id 140183106712512 this: 0x563e24eee2c8子线程执行140183099930176解析主线程创建b的拷贝即使主线程结束也是安全的子线程引用b的拷贝当子线程结束时负责析构该对象。 -c11线程对象创建后既不join()也不detach()的后果 c11中创建对象(std::thread)后有两种状态 joinablenonjoinable线程对象通过默认构造函数构造后状态为nonjoinable; 线程对象通过有参构造函数创建后状态为join able。joinable状态的线程对象被调用join()或detach()会变为nonjoinable状态。 线程对象析构 // thread类中的析构函数定义: ~thread() {if(nonjoinable){std::terminate();} }线程对象析构时会判断线程的状态。如果线程处于join able状态时会调用terminate()函数直接令程序退出。 也就是说创建一个可运行(创建时传入线程函数)线程对象后必须对该对象进行处理要么调用join()要么调用detach()否则线程对象析构时程序将直接退出。 - 附注代码 ※推荐的方式※ void testfn(const Base b) {std::cout this b tid std::this_thread::get_id() std::endl;usleep(10000000);std::cout b.num std::endl; }void subth() {Base B;std::cout subth Base B this B tid std::this_thread::get_id() std::endl;std::thread th(testfn, B);th.detach(); }int main() {std::cout main tid: std::this_thread::get_id() std::endl;std::thread th(subth);th.detach();std::cout main sleep std::endl;while(1); }main tid: 140303695139776 main sleep 默认构造函数Base()运行 this: 0x7f9aff7fed6c id 140303688267328 subth Base B this 0x7f9aff7fed6c tid 140303688267328 拷贝构造函数Base() this: 0x7f9af8000b78 id 140303688267328 析构函数~Base() this: 0x7f9aff7fed6c id 140303688267328 this 0x7f9af8000b78 tid 140303679874624 1 析构函数~Base() this: 0x7f9af8000b78 id 140303679874624
http://wiki.neutronadmin.com/news/225139/

相关文章:

  • 手表网站 云上饶营销网站建设
  • 贵州网站推广公司网络管理系统的基本组件包括哪些
  • 济南市高新技术官方网站开发区sem专员
  • 文化网站建设免费自己制作网站教程
  • 建设网站参数电商推广工作内容
  • 牵牛建站大连工程预算服务
  • 网站自然排名工具企业的网站内容
  • 做网站费用入什么科目网站开发实训总结
  • 桂林网站制作公司华彩wordpress mxtheme02
  • 安徽网站建站系统平台一般做网站是在什么网站找素材
  • 网站推广120如何使用wordpress
  • 兰州最好的网站建设公司哪家好wordpress svg
  • 搜索品牌价值的网站最新seo快排技术qq
  • 做网站销售的网站后台从哪里进去
  • 哪个网站做h5比较好制作app的网站哪个好
  • 代理网站备案怎么看一个网站有没有做百度推广
  • 怎么建造网站辽宁做网站哪家好
  • 门户网站ui设计长沙有哪些楼盘
  • 房产网站模板网站制作公司兴田德润实力强
  • 太原微信网站开发福州网站开发哪家比较好
  • 网站 新媒体建设情况安装wordpress数据库连接时出错
  • 来宾住房与城乡建设网站wordpress 链接提交
  • 垂直行业门户网站建设方案历史网站怎么做
  • 东盟建设集团有限公司网站网站全背景做多大
  • 公司网站引导页WordPress 评论列表折叠
  • 视频多的网站建设百度关键词点击工具
  • 公司网站建设站酷网页开发需要学什么
  • 如何制作网站后台管理系统都江堰seo
  • 自己免费做网站的流程响应式布局代码怎么写
  • 不同性质网站电子商务网站建设与管理的学后感