今天是2019年的第一天,还来不及感慨2018已经从指尖溜走的我已蜗居在实验室准备开题。既然是放假也忙里偷闲,抽点时间写点读书笔记。
今天要说的是C++多线程编程第二章,第二章的题目就是线程管理,分为以下几个章节:1、线程基础 2、向线程函数传递参数 3、转移线程所有去哪 4、运行时决定线程数量 5、识别线程 下面就讲讲我对这几章的认识。
第一节最主要是讲线程的基础知识。首先是线程的启动,线程的启动与构造函数调用想绑定,只要线程被构造,线程被被启动。一旦线程被启动,就要确定等待线程结束或者是让其自主运行(detach/join)。至于detach和Join的区别可以见我上一篇博文,对于join的位置也是有一定的讲究,也可以使用RAII方式,将join函数放到类的析构函数中,可以有效避免出错。
第二节主要是如何传参,线程传参很简单,只要在线程的构造函数后加入需要传入的参数,而书中后面详述大多是由于隐形转换等造成的指针悬挂出错等问题,在这里我就不多做介绍。
第三节主要介绍线程转移权归属,线程转移权归属最主要还是依赖于C++11最新特性move和右值。
通过和普通常量相同的方式也能解决所有权问题,需要注意的一点就是所有权转移可以进行在函数外。
第四节主要是讲关于如何统计程序中线程个数,一般使用std::thread::hardware_concurrency()来对线程进行计数。对于线程的统计对于程序提高运行效率非常有好处,不如说统计线程总数为5,就不需要将CPU所有核心全部打开,从而提高效率。
第五节主要是识别线程相关问题,这个问题应该是最简单,就是依赖于get_id进行。即std::cout<<std::this_thread::get_id();
C++多线程实战编程第二章笔记
最新推荐文章于 2023-06-07 16:22:55 发布