我想将一些Java代码翻译成C ++。其中一个Java类扩展了Thread类,并包含以下方法:
public static synchronized String createUniqueID() {
//some code here
}
如何使用Boost在C ++中同步(在Java意义上)类方法?我已经阅读过使用boost::mutex
来同步对共享数据的访问,但我不知道如何将它应用于C ++类方法。
答案 0 :(得分:4)
以下等同于C ++中的Java synchronized
方法。事实上,它完全相同,但有明显的例外,它是用不同的语言和不同的线程库编写的。
class Thing {
public:
static std::string createUniqueId () {
boost::unique_lock<boost::mutex> synchronized(mutex_);
// ... generate a unique id here.
}
protected:
static boost::mutex mutex_;
};
请注意,互斥锁是受保护的,而不是私有,允许您在子类中使用相同的互斥锁(如您所愿)。
答案 1 :(得分:0)
使用静态(即类)互斥。
答案 2 :(得分:0)
实际上我不明白你说的是什么“但我不知道如何将它应用于C ++类方法”
boost::mutex
你想要使用,你必须声明。现在没有生效 你必须使用
`boost::mutex::scoped_lock `
实现它 它可以自动解锁