shared_mutex C ++ 11实现

时间:2017-12-06 13:30:46

标签: c++ c++11 cross-platform

我在这个主题中找到了HowardHinnant的答案。 https://www.w3schools.com/js/

不幸的是,它似乎使用了以下宏,Microsoft编译器(VS2015 x64)似乎不支持,代码需要是C ++ 11和跨平台。

_LIBCPP_BEGIN_NAMESPACE_STD
_LIBCPP_END_NAMESPACE_STD

我试图将其更改为

namespace std{
...
}

然后编译器会抱怨以下消息。

  

严重性代码描述项目文件行列源抑制   状态工具错误C2244' std :: unique_lock< _Mutex> :: unique_lock':无法   将函数定义与现有函数匹配   声明shared_mutex_test c:\ documents \ visual studio   2015 \ projects \ shared_mutex_test \ shared_mutex.hpp 1217 1 Build

问题,如何解决这个问题。我需要shared_mutex / shared_lock功能,我必须符合C ++ 11。我们决定不引入像Boost这样的更大的库,因此如果我能让HowardHinnant的实现跨平台工作,那将是最佳解决方案。

非常感谢。

聚苯乙烯。 我还没有足够高的声誉来评论封闭的问题,因此我被迫打开这个新线程。随意将其移动到另一个线程中。

1 个答案:

答案 0 :(得分:0)

只需删除所有失败的代码即可解决问题。它似乎干扰了unique_lock的可用c ++ 11实现。因为我可以使用C ++ 11,所以我不需要那部分代码。

要完全解决它,可能需要实现完整的unique_lock类。