我想将一些 Java 代码翻译成 C++。其中一个 Java 类扩展了 Thread 类并包含以下方法:
public static synchronized String createUniqueID() {
//some code here
}
如何使用 Boost 同步(在 Java 意义上)C++ 中的类方法?我已阅读过有关使用 boost::mutex
同步对共享数据的访问的内容,但我不确定如何将其应用于 C++ 类方法。
最佳答案
以下内容相当于 C++ 中的 Java synchronized
方法。事实上,它是完全等价的,但明显的异常(exception)是它是用不同的语言和不同的线程库编写的。
class Thing {
public:
static std::string createUniqueId () {
boost::unique_lock<boost::mutex> synchronized(mutex_);
// ... generate a unique id here.
}
protected:
static boost::mutex mutex_;
};
请注意,互斥体是 protected ,而不是私有(private),允许您在子类中使用相同的互斥体(正如您应该的那样)。
关于java - 如何使用 boost 在 C++ 多线程程序中安全地控制类方法访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314745/