我有一些关于 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_ptr
、unique_ptr
等?如果是这样为什么?如果没有,我认为重写是个好主意
LockingPtr 实现一点点以获得线程安全的shared_ptr?
我的最后一个问题是关于 C++11 标准中新的 std::thread
功能。
我正在考虑为这个特定的功能编写策略类,例如
能够创建可连接线程或可分离线程。
您认为,std::thread
的哪一部分有兴趣为其创建策略?
提前感谢您的回答!
最佳答案
这是一个广泛且有些主观的话题,我只能给你我个人的建议。我不会详细讨论细节,因为我认为退一步看大局很重要。
通过使用新的 C++11 标准并用标准库提供的任何内容替换其他库,我获得了一些很好的经验。我所说的“我”还指我工作的代码库(一家拥有超过 100,000 名员工的公司的部门)。
像 Loki 或 Boost 这样的库在探索新领域和插入 C++ 向前发展方面做得非常好,对于 Boost 来说,它实际上是创建最终标准化的新组件的明确目标。
虽然 std::shared_ptr
、std::thread
和 std::mutex
的标准化版本可能缺少一些细节,但它们设计精良,可移植,并且由于它们是编译器附带的标准库的一部分,因此它们经过了很好的测试!这些都是对他们有利的重要观点。它还有助于使您的代码面向 future 并且更易于维护,让新人更容易加入。
因此,我的建议是:尽可能使用 C++11(包括标准库)提供的所有内容。仅在必要时使用 Loki、Boost 或其他库,但要保持开放的心态,关注它们的开发。
关于c++ - Loki 和 C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076557/