Boost thread 教程

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#include <boost/thread.hpp>

#include <iostream>

#include <stdio.h>

class
SpecificWork {

private:

    int
p_;

public:

    SpecificWork(int
value) : p_(value) { }

    void
operator()() {

        printf("Value is %d\n", p_);

    }

};

int
main() {

    int
i = 1;

    SpecificWork work(i);

    boost::thread
worker(work);

    worker.join();

}

启动函数对象线程,注意, work(i) i可以是常数也可以是变量,但是假如写成

boost::thread worker(SpecificWork(1)); 就只能是常数了。

而对于函数来说, 就没有上述限制

?





1

2

3

4

5

6

7

8

9

10

11

12

void
hello(int
value) {

    printf("hello %d\n", value);

}

int main() {

    int
i = 1;

    SpecificWork work(i);

    boost::thread
worker(&hello, i);//ok

    boost::thread
worker(&hello, 1);//ok

    worker.join();

}

另外,可以用 boost::bind 绑定函数

?





1

2

3

4

5

6

7

8

int main() {

    int
i = 1;

    SpecificWork work(i);

    //boost::thread worker(&hello, i); //ok

    boost::thread
worker(boost::bind(&hello, i)); //ok

    boost::thread
worker(boost::bind(&hello, 1)); //ok

    worker.join();

}

bind 的用法还不是很熟,待填

Reference

[1] http://kelvinh.github.io/blog/2013/12/03/boost-bind-illustrated/

[2] http://blog.csdn.net/zddblog/article/details/19816309

Boost thread 教程,布布扣,bubuko.com

时间: 2024-10-11 00:05:55

Boost thread 教程的相关文章

boost::thread类

前言 标准C++线程即将到来.预言它将衍生自Boost线程库,现在让我们探索一下Boost线程库. 几年前,用多线程执行程序还是一件非比寻常的事.然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率:为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序:GUI应用程序将那些费时,复杂的处理以线程的形式单独运行,以此来保证用户界面能够及时响应用户的操作.这样使用多线程的例子还有很多. 但是C++标准并没有涉及到多线程,这让程序员们开始怀疑是否可能写出多线程的C++程序.尽管不可

Boost::thread库的使用

阅读对象 本文假设读者有几下Skills [1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念. [2]熟悉C++开发,在开发工具中,能够编译.设置boost::thread库. 环境 [1]Visual Studio 2005/2008 with SP1 [2]boost1.39/1.40 概要 通过实例介绍boost thread的使用方式,本文主要由线程启动.Interruption机制.线程同步.等待线程退出.Thread Group几个部份组成. 正文 线程启动 线

C++ 系列:Boost Thread 编程指南

转载自:http://www.cppblog.com/shaker/archive/2011/11/30/33583.html 作者: dozbC++ Boost Thread 编程指南0 前言1 创建线程2 互斥体3 条件变量4 线程局部存储5 仅运行一次的例程6 Boost线程库的未来7 参考资料:0 前言 标准C++线程即将到来.CUJ预言它将衍生自Boost线程库,现在就由Bill带领我们探索一下Boost线程库.就在几年前,用多线程执行程序还是一件非比寻常的事.然而今天互联网应用服务程

boost::thread编程-线程中断(转)

原文转自 http://blog.csdn.net/anda0109/article/details/41943691 thread的成员函数interrupt()允许正在执行的线程被中断,被中断的线程会抛出一个thread_interrupted异常,它是一个空类,不是std::exception或boost::exception的子类 #include "stdafx.h" #include <windows.h> #include <iostream> #

boost thread使用

boost库是个准C++标准库,thread是其中重要的组成部分.它封装了不同操作系统的多线程编程,使得它具备了跨平台的能力. 首先是boost安装,从www.boost.org网站下下载最新的库,解压到本地目录下,重命名为boost 这里给出了安装脚本,该脚本采用静态链接多线程编译. 新建一个build_boost.sh的文件,将下述代码拷贝如文件内 #!/bin/bash machine=`uname -m | grep '64'` if [ a"$machine" == &quo

boost::thread之while(true)型线程终结方法

我们的程序中经常会用到线程来执行某些异步操作,而有些时候我们的线程执行的函数是这个样子的: [cpp] view plaincopyprint? void ThreadBody() { while( true ) { std::cout << "Processing..." << std::endl; Sleep(1000); } } 那么,从理论上讲,这个线程将永远的执行下去,直到这个线程所属的进程运行完毕为止.注意,即使这个线程函数是某个类的成员函数,即使我

boost::thread boost库线程

一.boost::thread的创建 1.线程创建方法一: boost::shared_ptr<boost::thread> writeThread_; boost::function0<void> f = boost::bind(&DBTaskMgr::execute, this); writeThread_ = boost::shared_ptr<boost::thread>(new boost::thread(f)); 2.线程创建方法二: boost::

boost thread 传递参数

#include <boost/thread/thread.hpp> #include <boost/bind.hpp> #include <iostream> void threadFunc(const char* pszContext) { std::cout << pszContext << std::endl; } int main(int argc, char* argv[]) { char* pszContext = "[e

boost::thread用法

最近在做一个消息中间件里面涉及到多线程编程,由于跨平台的原因我采用了boost线程库.在创建线程时遇到了几种线程创建方式现总结如下: 首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象: (2)explicit thread(const boost::function0<void>& threadfunc):      boost::function0<void>可以简单看为