5

我还不是 Boost 用户。然而,我计划尽快进入它。但是我不太关心 Boost,以及未来可能的名称冲突或与即将到来的 C++0x 的差异。(也许这不是一个真正的问题,但例如我发现 boost lambdas 语法非常丑陋,BOOST_FOREACH 对眼睛有攻击性,以及其他仅审美的个人观点)。

我对 TR2 真的很感兴趣,它似乎是由库Boost.Threadjust::thread实现的。两者似乎都是由 Anthony Williams 编写和维护的。

但是 just::thread 声称与 TR2 非常兼容。

我想知道你们中是否有人会指示我使用其中一种。just::thread 不是免费的,但如果它真的像 TR2 一样,我很受诱惑。

任何想法 ?

4

3 回答 3

5

目前,我正在 Linux 上使用 boost、just::thread 库和 gcc g++ 4.5 编译器的所谓“实验性”C++Ox 特性进行试验。关于线程,我发现我为 just::thread 编写的代码和 g++ 编译器是 100% 兼容的。boost 库 (1.43) 明显与前两者不兼容。但是,对于我的生产代码,我使用 boost 库。

在 boost、just::thread 和 g++ 编译器中正确和明智地使用可用命名空间不应成为名称冲突的问题。使用带有 C++Ox g++ 功能的 just::thread 没有问题;确实,just::thread 建议使用这些功能,例如可变参数模板。

于 2010-08-24T10:18:13.450 回答
4

我认为现在说图书馆“就像 TR2”还为时过早。TR2 将在 C++0x之后发布,而 C++0x 本身甚至还没有发布。

但是,Boost.Thread 库也声称遵循标准化委员会的发展。

我更喜欢任何 Boost 库而不是其“原始”库,因为 Boost 致力于高质量并且 Boost 社区协作维护库,而不是恰好迁移到 boost 的私有库。

您不必担心名称冲突,因为当前在boost::名称空间中的内容将保留在名称空间中,并且所有 TR2 内容可能会转到std::tr2::.

于 2010-08-24T09:49:21.087 回答
-1

目前最好的建议-以上都不是:-)

除非您有绝对紧迫的需求,否则您只需等待 C++0x 先稳定下来(大约需要 2 年),就可以为自己节省大量时间和烦恼。如果有人要你去追逐移动的目标 - 要求先看钱:-)和一个大保留者:-))

就像在许多其他情况下,最好先问自己“我的实际需求是什么”?如果是学习多线程开发,那么花时间学习 C# 或 Java 会更轻松。如果您需要开始开发生产级系统,那么您已经知道您的目标平台,并且您能做的最好的事情就是在目标平台上坚持使用久经考验的多线程库并提供完整的调试器支持. 再重复一遍 - 完整的调试器支持和集成决定了你在线程领域的生活质量。

If you touch Boost, make sure you have enough time to ensure that it doesn't have dependencies on a dozen of other boost-something files and then another dozen ... unless you are afficionado that is :-) If you touch a libraty tht claims automatic dedlock detection be prepared to pay in CPU cycles and deal with potentially unwanted interference.

于 2010-08-24T22:27:57.223 回答