我还不是Boost用户。但我计划尽快进入。 但是我很少关注Boost,以及可能的未来名称冲突或与即将到来的C ++ 0x的差异。 (也许这不是一个真正的问题,但是例如我发现提升lambda的语法非常丑陋,BOOST_FOREACH咄咄逼人,以及其他唯一的审美个人观点。)
我对TR2非常感兴趣,TR2似乎由图书馆Boost.Thread和just::thread实施。两者似乎都是由Anthony Williams编写和维护的。
但只是:: thread声称与TR2密切相关。
我想知道你们中是否有人会指示我使用其中一个。 just :: thread不是免费的,但如果它真的像TR2一样,我很受诱惑。
有什么想法吗?
答案 0 :(得分:5)
目前,我正在Linux上使用boost,just :: thread库和gcc g ++ 4.5编译器的所谓“实验性”C ++ Ox功能进行实验。关于线程,我已经按下了,我发现我为just :: thread编写的代码和g ++编译器是100%兼容的。增强库(1.43)与前两者明显不兼容。但是,对于我的生产代码,我使用了boost库。
名称冲突不应该是在boost,just :: thread和g ++编译器中正确和明智地使用可用命名空间的问题。使用just :: thread和C ++ Ox g ++功能我没有问题;事实上,just :: thread建议使用这些功能,例如可变参数模板。
答案 1 :(得分:4)
我认为现在说图书馆“就像TR2”还为时过早。 TR2将在 C ++ 0x之后发布,它本身尚未发布。
但是,Boost.Thread库也声称遵循标准化委员会的发展。
我更喜欢任何Boost库而不是它的“原创”,因为Boost致力于高质量,Boost社区协作维护库,而不是刚刚迁移到提升的私有库。
您不必担心名称冲突,因为当前boost::
命名空间中的内容将保留在命名空间中,并且所有TR2内容可能都会转到std::tr2::
。
答案 2 :(得分:-1)
目前最好的建议 - 以上都不是: - )
除非你有一个绝对紧迫的需求,否则只要等到C ++ 0x先安定下来,你就可以省去很多时间和悲伤,这需要大约2年。如果有人要求你去追逐移动目标 - 要求先看钱:-)和一个大保留者: - ))
与许多其他情况一样,最好首先问问自己“我的实际需求是什么”?如果它正在学习多线程开发,那么花时间使用C#或Java会让您更加轻松。如果您需要开始开发生产级系统,那么您已经了解了您的目标平台,并且您可以做的最好的事情就是坚持使用在目标平台上进行多线程的试用版本的lib并拥有完整的调试器支持。再重复一次 - 完全的调试器支持和集成决定了你在线程领域的生活质量。
如果你触摸Boost,请确保你有足够的时间来确保它没有依赖于十几个其他的boost-something文件然后另外打...除非你是afficionado :-)如果你触摸图书馆声称自动解锁检测准备支付CPU周期并处理可能不需要的干扰。