萱草基于C++11,介绍启动线程的五种方式( 二 )


本节将采用函数对象的形式启动线程 , 说明如何应用到实际的应用中 。
假设有不同的命令 , 需要在线程中执行 , 首先实现命令基类
萱草基于C++11,介绍启动线程的五种方式
本文插图
然后创建执行命令类JWorkThread, 并重载operator() 运算符, 并且内部执行命令 。
萱草基于C++11,介绍启动线程的五种方式
本文插图
接着现在有一个类JRunCmd继承基类JCommand , 则调用方式如下所示
萱草基于C++11,介绍启动线程的五种方式
本文插图
本文主要说明了五种启动线程的方式 , 并且说明了其特点 , 最后举了一个线程应用的场景 。 但是 , 实际使用过程中 , 需要结合具体的场景来使用对应的线程启动方式 。

  • 函数指针方式:定义普通函数
  • 函数对象方式:重载operator()运算符
  • Lambda函数方式:匿名函数
  • 类函数指针的方式:对象函数指针
  • std::bind的方式: 实际上也是对象函数指针


推荐阅读