如何开始使用 Boost 线程
一个关于在 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 - 只需要根据你使用的版本修改目录路径
假设你已在你的 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 版本
在安装过程中,选择要安装的库 - 不必全部安装,如果你愿意,只需安装线程库
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 中,右键单击“计算机”,选择“属性”和“高级系统设置”
单击“环境变量…”按钮,然后选择“编辑”按钮
包含目录
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 线程程序现在应该可以编译和运行,并给出以下输出
main: startup
main: waiting for thread
Worker: running
Worker: finished
main: done
其他与 Boost 相关的文章和教程可以在这里找到。