2010-08-24 103 views
5

我还不是Boost用户。不过,我正计划尽快进入。 但是我很少关心Boost,以及未来可能的名称与即将出现的C++ 0x的冲突或差异。 (也许这不是一个真正的问题,但是例如我觉得boost lambda语法非常难看,BOOST_FOREACH看起来凶狠,以及其他唯一的审美个人观点)。Boost.Thread或just :: thread?

我真的很感兴趣的TR2,这似乎是由库Boost.Threadjust::thread实施。两者似乎都是由安东尼威廉姆斯撰写和维护的。

但just :: thread声称与TR2紧密相容。

我想知道你们中的任何一个人是否会指示我使用其中一种。 just ::线程不是免费的,但如果它真的就像TR2一样,那么我就会受到诱惑。

有没有想法?

回答

5

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

在boost,just :: thread和g ++编译器中正确和明智地使用可用命名空间时,名称冲突应该不成问题。使用C++ Ox g ++特性只需::线程就没有问题;事实上,just :: thread建议使用这些特性,比如可变参数模板。

+0

你的意思是“boost库(1.43)与前两者明显不兼容”。你在谈论什么样的兼容性? – 2010-08-24 11:40:28

+0

@Stephane:'我编写的代码只是::线程和g ++编译器100%兼容';代码兼容,这意味着在C++ Ox下成功编译和链接just :: thread的代码将仅使用C++ Ox g ++ 4.5进行编译和链接,无需修改。我一直无法实现与boost库的兼容性。 – Sam 2010-08-26 12:51:07

+0

@thanx Sam。我仍然在犹豫,但这仅仅是:: thread的一个好处。 – 2010-08-26 13:12:23

4

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

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

我更喜欢任何Boost库在其“原始”,因为Boost致力于高质量和Boost社区协作维护图书馆,而不是一个刚刚发生迁移到提升的私有库。

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

-1
在这个时候

最好的建议 - 没有上述:-)

除非你有绝对迫切需要的,你会被正在安排的C++ 0x自己节省了大量的时间和悲痛的第一个结算,这将需要约2年。如果有人要求你去追逐移动目标 - 首先要求看到钱:-)和一个大保留:-))

像在许多其他情况下,最好先问自己“我的实际需求是什么” ?如果它正在学习多线程开发,那么花时间使用C#或Java将会容易得多。如果您需要开始开发生产级系统,那么您已经知道您的目标平台,并且您可以做的最好的事情就是坚持使用任何一种针对目标平台上的多线程的试用版本,并且具有对调试器的全面支持。只需重复一次 - 全面的调试器支持和集成决定了您在线程域中的生活质量。

如果你碰Boost,确保你有足够的时间确保它不依赖于其他十几个boost-something文件,然后再打十几个...除非你是afficionado :-)如果你触摸libraty声称自动解锁检测准备在CPU周期内支付和处理可能不必要的干扰。