是否存在的函数等价物https://github.com/facebook/folly/blob/main/folly/docs/Synchronized.md它是自包含的,最好只包含头,这样我就不必把整个愚蠢的库拉到我的项目中了?
reddit上有一个讨论,其中也提到了folly::Synchronized
,并提供了一些其他解决方案。
也许你正在寻找这样的东西:https://github.com/copperspice/cs_libguarded
测试代码片段:
shared_guarded<int, shared_mutex> data(0);
{
auto data_handle = data.lock();
++(*data_handle);
data_handle.reset();
data_handle = data.lock();
}
auto data_handle = data.try_lock();
REQUIRE(data_handle != nullptr);
REQUIRE(*data_handle == 1);
注意:cs_libguard需要C++17。