Boost多线程配置

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
#include <iostream> 
#include <boost/thread.hpp>  
#include <boost/date_time.hpp>      
       
voidworkerFunc() 
    boost::posix_time::seconds workTime(3);         
    std::cout << "Worker: running" << std::endl;   
       
    // Pretend to do something useful...
    boost::this_thread::sleep(workTime);         
    std::cout << "Worker: finished" << std::endl; 
}   
       
intmain(intargc,char* argv[]) 
    std::cout << "main: startup" << std::endl;         
    boost::threadworkerThread(workerFunc);   
       
    std::cout << "main: waiting for thread" << std::endl;         
    workerThread.join();   
       
    std::cout << "main: done" << std::endl;         
    return0; 
}

 

例子代码创建了一个boost线程对象,传递给他工作函数的参数,在完成时退出该线程。

这个简单的例子,我用来验证Boost线程库设置是否成功。以下步骤是运行这个简单例子的必备步骤。

 

1. 下载并安装Boost

如果你还没有安装好Boost,可以从这里下载并安装:http://www.boost.org/users/download/ 或者 http://www.boostpro.com/download ,安装好后在你的Visual Studio项目中,选择配置属性->附加:包含目录。然后输入Boost的安装目录。

完成以上步骤后,首次编译上面的代码可能会遇到如下错误:

LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc100-mt-gd-1_46_1.lib'

意思是找不到库文件,在Boost中,必须建立自己的库。

 

2. 获得bjam

下一步是建立bjam.exe, 我发现最简单的方法是使用BoostPro提供的安装程序。在我的例子中,使用的是boostpro 1.46.1的安装程序。下载并运行此程序。对于我来说,我最喜欢的还是VS 2003.NET 和VS 2010两个版本。

在安装过程中,选择需要安装什么库,没必要全选,选择你需要的即可。

3. 创建 bjam.exe可执行文件

bjam安装后,打开命令行然后到src目录下,例如:

C:\Program Files\boost_1_46_1\tools\build\v2\engine\src

 

运行build.bat。注意脚本将在bin.ntx86子目录下创建bjam.exe可执行文件。

C:\Program Files\boost_1_46_1\tools\build\v2\engine\src\bin.ntx86

 

4. 更新PATH环境变量

现在添加bjam.exe到PATH环境变量中。在Windows 7,可以右键点击“计算机”(或我的电脑),选择属性,然后在高级系统设置中修改。

点击环境变量PATH,选择编辑按钮。

将目录添加进去,例如:C:\Program Files\boost_1_46_1\tools\build\v2\engine\src\bin.ntx86

 

5. 运行bjam可执行文件

在命令行,到C:\Program Files\boost_1_46_1目录下,输入bjam,程序创建过程需要等待5-15分钟。

6. 设置Visual Studio项目属性

 

在你的Visual Studio 项目中,选择配置属性->连接器->输入->附加依赖项,然后输入 libboost_thread-vc100-mt-gd-1_46_1.lib

在你的Visual Studio项目中,选择项目配置属性->连接器->常规->附加库目录,

告诉它stage/lib目录。

然后呢,我一开始所展示的Boost线程代码就可以编译运行了,输出如下:

 

1
2
3
4
5
main: startup
main: waiting for thread
Worker: running
Worker: finished
main: done

转自http://blog.okbase.net/haobao/archive/3.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值