C++ 洛基和C++;11

C++ 洛基和C++;11,c++,c++11,loki,C++,C++11,Loki,我对库Loki和新标准C++11有一些问题 我的第一个问题是关于库的LevelMutex功能。 LevelMutex直接在windows上使用CRITICAL\u部分,在windows中使用pthread\u mutex\t Linux以实现这些功能。课程非常好 但我脑子里仍然有一个问题。现在我们有了一个全新的包装 在新标准(std::mutex)中,是否值得替换低级对象 这些都依赖于这个平台吗?若否,原因为何?我的观点是 -我们可以在Loki中删除许多编译器检查 -我们可以保持Loki的最新版

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

我的第一个问题是关于库的
LevelMutex
功能。
LevelMutex
直接在windows上使用
CRITICAL\u部分
,在windows中使用
pthread\u mutex\t
Linux以实现这些功能。课程非常好 但我脑子里仍然有一个问题。现在我们有了一个全新的包装 在新标准(
std::mutex
)中,是否值得替换低级对象 这些都依赖于这个平台吗?若否,原因为何?我的观点是 -我们可以在Loki中删除许多编译器检查 -我们可以保持Loki的最新版本,当标准库中发生更改时,所有更改都将推送到Loki -我们可以在Loki中使用
std::mutex
的异常

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

我的第二个问题是关于在Loki中实现的
SmartPtr
。 考虑到我们已经实现了,您认为值得使用这个实现吗
shared\u ptr
unique\u ptr
等?如果是,为什么?如果没有,我认为重写是个好主意 LockingPtr实现需要一点时间才能获得线程安全的共享ptr

我的最后一个问题是关于C++11标准中新的
std::thread
功能。 我正在考虑为这个特殊的功能编写策略类,比如 具有创建可接合螺纹或可分离螺纹的能力。 在您看来,为
std::thread
的哪一部分创建策略比较有趣


提前感谢您的回答

这是一个宽泛而有点主观的话题,我只能给你我的个人建议。我不想谈细节,因为我认为退一步看大局很重要

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

洛基或Boost等库在探索新的前沿领域和使C++向前发展方面做得很好,因为它实际上是一个明确的目标,创造最终会被标准化的新组件。 虽然标准化版本的

std::shared_ptr
std::thread
std::mutex
可能缺少一些细节,但它们设计良好,可移植,并且,考虑到它们是编译器附带的标准库的一部分,它们经过了很好的测试!这些都是有利于他们的重要观点。它还有助于使您的代码经得起未来的考验,更易于维护,也更容易让新手加入


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

我明白你的意思,这正是我问这个问题的原因,我总是尝试使用稳定且经过测试的库。因此,在您看来,对Loki进行一些修改以使其能够使用新的(并经过测试的)功能并不是一件坏事。@Athanase基本上是的,不过我会检查它是否可以集成到Loki中,或者附加层是否足够薄以构建您自己的版本。维护自己的Loki分支可能会产生一些问题,而消除依赖通常有助于提高稳定性。考虑尽可能多地使用标准库编写洛基需要的那些部件。此外,考虑使用<代码> STD::SyrdYPPTR ET.A.直接。Loki的PBD听起来很棒,但最后我更喜欢实践中的
std::shared_ptr
。自从我从Alexendrescu的书中了解了图书馆以来,我已经查阅了很多Loki的资料来源。这是完全可行的,我会尽快开始工作。另外,我问这个问题是因为我听到很多人说“如果std::thread只是pthread的包装器,为什么要使用std::vector?如果它只是C数组的包装器,为什么要使用std::vector,因为它只是添加了降低性能的函数调用”。但我个人认为,这种(很少的)成本远远超过了像Loki这样的库(当然还有标准库)的好处。