• boost线程组


    原文地址:http://rainx.cn/blog/archives/109

    呵呵,今天要写一个性能测试的程序,由于之前用过boost的thread,所以就采用了boost的thread库

    程序大概是根据指定的参数来生成多个线程来进行一个操作…本来满简单的..但是之前时候不知道boost有进程组的支持…所以只能自己动态的建立一大堆 thread ..放到一个容器中..然后在遍历join下,然后再在结束前delete他们,很麻烦..不过最后还是实现了。不过就在完成之后,同事晓哲给我看了一下他的程序..用到了boost的thread_group ,这才发现原来boost也有进程组的支持阿…晕….刚才试着写了一个简单的程序…呵呵,根据指定参数生成指定个数的子程序… 很简单阿..再也不用遍历一遍每一个join一下了..join_all就搞定了..

    下面是代码,呵呵,很简单吧

    #include <boost/thread/thread.hpp>
    #include <boost/bind.hpp>
    #include <iostream>

    using namespace boost;
    using namespace std;

    void runChild(const int n)
    {
        cout << "我是第" << n << "个子线程" << endl;
        sleep(1);
        cout << "进程" << n <<  "退出" << endl;
    }

    int main(int argc, char** argv)
    {
        int num;
        thread_group threads;

        if (argc < 2)
        {
            cout << "请提供一个要生成线程数的参数" << endl;
            exit(-1);
        }

        num = atoi(argv[1]);

        cout << "我是主程序,我准备产生" << num << "个子线程" << endl;
        for(int i = 0; i < num; i++)
        {
            threads.create_thread(bind(&runChild, i));
        }
        cout << "我是主程序,我在等子线程运行结束" << endl;
        threads.join_all();
        return 0;
    }

    编译&测试(我在我的ubuntu下测试的)

    > g++ -g -Wall -O0 test.cc -o boost -lboost_thread
    > ./boost 3

    sudo apt-get install libboost-thread1.40-dev  boost线程库需要额外安装

    *****output******
    我是主程序,我准备产生3个子线程
    我是第0个子线程
    我是第1个子线程
    我是主程序,我在等子线程运行结束
    我是第2个子线程
    进程进程10退出退出

    进程2退出

      

  • 相关阅读:
    资源合并fis-postpackager-simple插件的使用
    FIS3使用官方例子流程
    FIS常用命令
    SASS输出风格
    Webstorm实时编译SASS和LESS
    如何使用Less?
    DNS预解析dns-prefetch提升页面载入速度优化前端性能
    前端性能优化策略
    利用多域名存储静态资源进行性能优化:网站的静态资源为什么要使用独立域名
    Nginx多域名配置
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2129579.html
Copyright © 2020-2023  润新知