C++ 模拟 Rust 类似同步

use*_*932 2 c++ boost c++11

正如我在一些关于 rust 的视频中看到的那样,它有这样的东西(我使用 c++ 而不是 rust 来展示想法):

template<typename T>
class Synchronized {
    public:
        Synchronized(T);
        Something<T> get();
    private:
        std::mutex lock_;
};
Run Code Online (Sandbox Code Playgroud)

和这样的用法:

Synchronized<std::string> obj;

auto s = obj.get();
//after that you can work with s as with std::string
//and obj.lock_ in locked state, after s was destroyed
//obj.lock_ will be unlocked
Run Code Online (Sandbox Code Playgroud)

boost或其他一些C ++通俗图书馆都有这样的模式实现?

Che*_*Alf 5

撰写本文时的实验boost::synchronized_value似乎正是您要寻找的。