c++ - Loki 和 C++11

标签 c++ c++11 c++-loki

我有一些关于 Loki 库以及新标准 C++11 的问题。

我的第一个问题是关于该库的 LevelMutex 功能。 LevelMutex 在 Windows 上直接使用 CRITICAL_SECTION,在 Windows 上使用 pthread_mutex_t Linux 是为了实现这些功能。类(class)非常好 设计,但我脑子里仍然有一个问题。现在我们有了一个全新的包装 在新标准(std::mutex)中是否值得替换低级对象 哪些平台依赖于这个?如果没有,为什么?我的观点是 - 我们可以删除 Loki 中的大量编译器检查 - 我们可以保留 Loki 的最新版本,当标准库发生更改时,所有更改都将推送到 Loki - 我们可以在 Loki 中使用 std::mutex 的异常(exception)。

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

我的第二个问题是关于 Loki 中实现的 SmartPtr。 鉴于我们有以下事实,您认为值得使用此实现吗 shared_ptrunique_ptr 等?如果是这样为什么?如果没有,我认为重写是个好主意 LockingPtr 实现一点点以获得线程安全的shared_ptr?

我的最后一个问题是关于 C++11 标准中新的 std::thread 功能。 我正在考虑为这个特定的功能编写策略类,例如 能够创建可连接线程或可分离线程。 您认为,std::thread 的哪一部分有兴趣为其创建策略?

提前感谢您的回答!

最佳答案

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

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

像 Loki 或 Boost 这样的库在探索新领域和插入 C++ 向前发展方面做得非常好,对于 Boost 来说,它实际上是创建最终标准化的新组件的明确目标。

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

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

关于c++ - Loki 和 C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076557/

相关文章:

c++ - 动态设置要提取的参数

c++ - 洛基 C++ : How does 'ScatterHierarchyTag' solve the inheritance ambiguity?

c++ - 如何使用 Loki 的小对象分配器?

c++ - 当我将一个字符串放入节点->名称时,为什么会出现段错误(核心已转储)?

c++ - 在 Qt 中如何从另一个文件中的函数访问小部件?

c++ - c++ (c++0x) 如何处理隐式类型变量?

c++ - Loki 仿函数 - 内存问题

c++ - 为什么 std::vector 在初始化时强制执行复制?

c++ - 如何与私有(private)嵌套类成为 friend

c++ - 访问和打印元组中的数据,并使用 C++14 使用模板函数显示它