2

我对 Loki 库和新标准 C++11 有一些疑问。

我的第一个问题是关于LevelMutex图书馆的功能。 LevelMutex直接使用CRITICAL_SECTIONWindows 上的 apthread_mutex_t和 Linux 中的 a 来实现功能。这些课程设计得非常好,但我的脑海中仍然存在一个问题。现在我们在新标准中有一个全新的包装器 ( std::mutex) 是否值得替换依赖于平台的低级对象?如果不是,为什么?我的观点是——我们可以在 Loki 中删除大量编译器检查——我们可以保持 Loki 的最新版本,并且当标准库中发生更改时,所有更改都将推送到 Loki——我们可以使用std::mutexLoki 中的异常。

我知道这std::mutex只是平台互斥对象的包装器,异常也是系统特定错误的包装器,但仍然......同样的问题适用于Threads.h.

我的第二个问题是关于SmartPtr在 Loki 中实现的。鉴于我们有 shared_ptr,unique_ptr等,你认为值得使用这个实现吗?如果是,为什么?如果不是,我认为稍微重写 LockingPtr 实现以获得线程安全 shared_ptr 是个好主意?

我的最后一个问题是关于std::threadC++11 标准中的新功能。我正在考虑为这个特定功能编写策略类,例如能够创建可连接线程或可拆卸线程。在您看来,为哪些部分std::thread创建政策会很有趣?

提前感谢您的回答!

4

1 回答 1

3

这是一个广泛且有些主观的话题,我只能给你我的个人建议。我不会详细介绍,因为我认为退后一步看大局很重要。

通过使用新的 C++11 标准并用标准库提供的任何内容替换其他库,我获得了一些很好的经验。“我”也指我工作的代码库(一家拥有超过 100,000 名员工的公司的一个部门)。

Loki 或 Boost 等库在探索新领域和推动 C++ 发展方面做得非常好,对于 Boost,它实际上是一个明确的目标,即创建最终将被标准化的新组件。

虽然 的标准化版本std::shared_ptrstd::thread并且std::mutex可能缺少一些细节,但它们设计精良、可移植,并且鉴于它们是随编译器一起提供的标准库的一部分,它们经过了很好的测试!这些都是有利于他们的重要观点。它还有助于使您的代码面向未来并且更易于维护,新人更容易加入。

因此,我的建议是:尽可能多地使用 C++11(包括标准库)必须提供的一切。仅在必要时使用 Loki、Boost 或其他库,但要保持开放的心态,关注它们的开发。

于 2013-09-29T11:49:30.410 回答