我对Loki库以及新的标准C++ 11有一些疑问。
我的第一个问题是关于库的LevelMutex
功能。LevelMutex
直接在Windows上使用CRITICAL_SECTION
,在Windows中使用pthread_mutex_t
Linux为了执行功能。上课非常好
设计,但问题仍然存在。现在我们有了一个全新的包装器
在新标准(std::mutex
)中,是否值得替换低级对象
哪个平台依赖于此?如果没有,为什么?我的意思是
-我们可以在Loki中删除很多编译器检查
-我们可以保留Loki的最新版本,并且当标准库中发生更改时,所有更改都将推送到Loki
-我们可以在Loki中使用std::mutex
的异常(exception)。
我知道std::mutex
只是平台互斥对象的包装,并且
异常(exception)也是针对系统特定错误的包装,但是仍然...
同样的问题适用于Threads.h
中的功能。
我的第二个问题是关于在Loki中实现的SmartPtr
。
考虑到我们拥有以下事实,您是否认为使用此实现值得shared_ptr
,unique_ptr
等?如果可以,为什么?如果没有,我认为重写是一个好主意
LockingPtr实现有点使线程安全shared_ptr吗?
我的最后一个问题是有关C++ 11标准中新的std::thread
功能的信息。
我正在考虑为此特定功能编写策略类
具有创建可连接线程或可分离线程的能力。
您认为std::thread
的哪一部分为创建策略很有趣?
预先感谢您的回答!
最佳答案
这是一个广泛且有点主观的话题,我只能给您我的个人建议。我不会详细介绍,因为我认为退后一步并从更大的 Angular 来看很重要。
通过使用新的C++ 11标准并用标准库提供的其他库替换其他库,我取得了一些良好的经验。 “我”也指我工作所在的代码库(员工超过100.000的公司部门)。
Loki或Boost等库在探索新 Realm 和 push C++方面做得非常出色,对于Boost来说,实际上是创建最终将被标准化的新组件的明确目标。
尽管std::shared_ptr
,std::thread
和std::mutex
的标准化版本可能缺少一些细节,但它们设计良好,可移植,并且考虑到它们是编译器附带的标准库的一部分,因此它们经过了很好的测试!这些是支持它们的重要点。它还有助于使您的代码更可靠,更易于维护,并且使新手更容易加入。
因此,我的建议是:尽可能使用C++ 11(包括标准库)必须提供的所有内容。仅在必要时使用Loki,Boost或其他库,但请注意它们的开发,以保持开放的态度。