代码之家  ›  专栏  ›  技术社区  ›  Stephane Rolland

boost.thread还是只是::thread?

  •  5
  • Stephane Rolland  · 技术社区  · 16 年前

    我还不是超级用户。不过,我正计划尽快进行调查。 然而,我不太关心Boost和未来的名字冲突或与即将到来的C++ 0x的区别。(也许这不是一个真正的问题,但是,例如,我发现Boost lambdas语法相当丑陋,PosithPro对眼睛很有侵略性,以及其他仅仅是个人审美观点)。

    我对TR2非常感兴趣,它似乎是由图书馆实现的 Boost.Thread 和 just::thread . 这两本书似乎都是由安东尼·威廉姆斯撰写和维护的。

    但just::thread声称与tr2紧密兼容。

    我想知道你们中是否有人会指示我使用其中一个。 只是::线程不是免费的,但如果它真的像tr2,我很想。

    有什么想法吗?

    3 回复  |  直到 16 年前
        1
  •  5
  •   Sam    16 年前

    目前,我在Linux上用Boost,即:线程库和GCC G+ 4.5编译器的所谓“实验”C++牛特性来进行实验。关于线程,我已经找到了我为just::thread编写的代码和g++编译器100%兼容。Boost库(1.43)与前两个库明显不兼容。但是,对于我的生产代码,我使用boost库。

    正确而明智地使用boost中的可用名称空间(仅限于::thread和g++编译器)不会导致名称冲突。我只使用::具有C++ OX+G++特性的线程没有问题;事实上,它只建议::使用这些特性的线程,如变量模板。

        2
  •  4
  •   Pontus Gagge    16 年前

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

    然而,boost.thread库也声称遵循标准化委员会的开发。

    我更喜欢任何Boost库,而不是它的“原始库”,因为Boost致力于高质量,Boost社区以协作方式维护库,而不是刚好迁移到Boost的私有lib。

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

        3
  •  -1
  •   ZXX    16 年前

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

    除非你有一个绝对迫切的需要,否则你将节省大量的时间和悲伤,只需等待C++0X先解决,如果需要有人要求你去追逐移动目标——请先查看钱:-和一个大的保持器:-)。

    像许多其他情况一样,最好先问问自己“我的实际需求是什么”?如果它正在学习多线程开发,那么在C语言或Java上花费时间会让你更容易紧张。如果你需要开始开发一个生产级的系统,那么你已经知道你的目标平台,你能做的最好的事情就是坚持使用Fire lib为目标平台上的多线程所做的任何尝试,并且拥有完全的调试器支持。再重复一遍——完全的调试器支持和集成决定了你在线程领域生活的质量。

    如果你触摸了Boost,确保你有足够的时间来确保它不依赖于其他的Boost something文件,然后是其他的Boost something文件。除非你是亲密的人,也就是说:—)如果你接触到一个库,它会声称自动去锁检测准备在CPU周期内支付,并处理潜在的不必要的干扰。