65.9K
CodeProject 正在变化。 阅读更多。
Home

如何开始使用 Boost 线程

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.45/5 (10投票s)

2011年11月7日

CPOL

4分钟阅读

viewsIcon

97071

一个关于在 Visual Studio 环境中设置 Boost 线程的简单指南。

更新:2014年5月5日

不幸的是,BoostPro 已经不再被支持,也无法再使用,因此这篇文章中关于使用 BoostPro 安装 Boost 线程的部分已经过时。

但是,你可能会发现这篇替代文章对于设置需要单独编译的 Boost 库很有帮助。它们安装起来非常简单,只需要一些命令行指令就可以完全安装所有需要单独编译的库。然后你就可以开始享受 Boost 线程了,而这正是本文的主题。

如果你有任何其他问题,请随时与我联系。

安迪

引言

本文旨在为初学者提供一个易于理解的逐步介绍,帮助他们在 Visual Studio 环境中首次设置 Boost 线程。 就像许多技术主题一样,似乎有很多信息告诉你很多,但实际上并没有展示给你多少!

本文不包含关于如何以各种不同方式使用 Boost 线程的深入讨论。 那是留给其他时间和地方的。 本文(希望如此)所做的,是帮助你启动并运行 Boost 线程,而不会出现任何编译器警告,至少对我来说,这通常是最难的部分。

一个简单的 boost::thread 示例

Gavin Baker 的“antonymn”页面上有一个关于 boost 线程编程的很好的介绍,我将在这里引用

#include <iostream>  
#include <boost/thread.hpp>   
#include <boost/date_time.hpp>       
      
void workerFunc()  
{  
    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;  
}    
      
int main(int argc, char* argv[])  
{  
    std::cout << "main: startup" << std::endl;          
    boost::thread workerThread(workerFunc);    
      
    std::cout << "main: waiting for thread" << std::endl;          
    workerThread.join();    
      
    std::cout << "main: done" << std::endl;          
    return 0;  
}

此示例代码创建一个 boost 线程对象,为其传递一个示例工作函数,并在完成后退出线程。 我将这个简单的示例用作验证 Boost 线程库成功设置的一种手段。 以下部分描述了运行此简单示例所需的初步步骤。

1. 下载并安装 Boost

如果你尚未下载并安装 Boost 库,请从这里这里下载并安装。 在你的 Visual Studio 项目中,选择配置属性 -> 附加包含目录,并输入你安装 Boost 根目录的路径。 在获取以下屏幕截图时,使用的 Boost 版本为 1.42.0 - 只需要根据你使用的版本修改目录路径

StartingBoostThreads/threads9.png

假设你已在你的 Visual Studio 环境中下载、解压缩并安装了 Boost 库,并且告诉 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 版本

StartingBoostThreads/threads1.png

在安装过程中,选择要安装的库 - 不必全部安装,如果你愿意,只需安装线程库

StartingBoostThreads/threads2.png

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 中,右键单击“计算机”,选择“属性”和“高级系统设置”

StartingBoostThreads/threads3.png

单击“环境变量…”按钮,然后选择“编辑”按钮

StartingBoostThreads/threads4.png

包含目录

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

作为另一个环境变量,确保每个变量用冒号 (;) 分隔

StartingBoostThreads/threads5.png

5. 运行 bjam 可执行文件

在命令提示符下,转到 C:\Program Files\boost_1_46_1 目录,然后输入“bjam”,等待大约 5-15 分钟,在此期间程序被创建

StartingBoostThreads/threads6.png

6. 设置 Visual Studio 项目属性

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

StartingBoostThreads/threads7.png

在你的 Visual Studio 项目中,设置项目配置属性 -> 链接器 -> 常规 -> 附加包含目录,告诉它 stage/lib 文件夹的位置

StartingBoostThreads/threads8.png

就是这样! 此示例 Boost 线程程序现在应该可以编译和运行,并给出以下输出

main: startup
main: waiting for thread
Worker: running
Worker: finished
main: done

其他与 Boost 相关的文章和教程可以在这里找到。

© . All rights reserved.