您当前的位置: 首页 >  linux

phymat.nico

暂无认证

  • 0浏览

    0关注

    1967博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

linux下boost的一个扩展线程池-threadpool-的学习

phymat.nico 发布时间:2017-12-08 17:12:10 ,浏览量:0

转自:http://www.cnblogs.com/xiaouisme/archive/2012/10/04/2711691.html

安装boost:

http://www.boost.org/下载boost,我下下来是boost_1_51_0. boost库的大部分都可以直接引用头文件就行了,因为大多数都是头文件里模板加inline函数构成。但是也有些是需要安装成二进制lib的,比如thread.(详见文档:”Getting Started…”)

$ cd boost_1_51_0
$ sudo ./bootstrap.sh //这条命令类似./configure. 也可以./bootstrap.sh --help看看有哪些命令参数.
$ sudo ./b2 install //这样,boost库的所有头文件和需要编译的lib都安装到/usr/local/lib 和 /usr/local/include了。(头文件在boost文件夹里.)
 
 
  • 1
  • 2
  • 3

boost扩展工具-线程池(threadpool): http://threadpool.sourceforge.net/下载threadpool,然后把threadpool里面的boost目录下的threadpool.hpp和threadpool文件夹拷贝到/usr/local/include/boost/下(如果有权限问题还得cd /usr/local/include/boost && sudo chmod -R 777 *). 使用threadpool需要链接boost的两个共享库:boost_thread、boost_system(如果是静态链接那就还得动态链接pthread库), 并且include

callback_task.hpp:

/*
 * @file callback_task.hpp
 * @brief add callback task for threadpool.
 */

#ifndef __callback_task_h__
#define __callback_task_h__

#include 

namespace boost { namespace threadpool
{

template
class callback_task
{
    typedef boost::function CALLBACK;
    typedef boost::function FUNCTION;

private:
    CALLBACK m_Callback;
    FUNCTION m_Function;

public:
    callback_task(FUNCTION f, CALLBACK c):m_Callback(c), m_Function(f){}

    void operator()(){ m_Callback(m_Function()); }
};


}} // namespace boost::threadpoll

#endif // __callback_task_h__
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
 main.cpp:

#include 
#include 
#include 
#include "callback_task.hpp"

using namespace std;
using namespace boost::threadpool;


void task_normal()
{
    cout             
关注
打赏
1659628745
查看更多评论
0.0786s