java - 如何使用 boost 在 C++ 多线程程序中安全地控制类方法访问?

标签 java c++ multithreading boost

我想将一些 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/

相关文章:

java - Hibernate 加入两个表并获取所有记录?

java - 什么是契约(Contract)类以及如何使用它

c++ - 切片无状态派生类是否安全?

C++ 类定义分为两个 header ?

javascript - Node.js 如何用一个线程处理并发请求?

java - 判断当前线程是否持有 Java `Lock`

java - 将 ActionListener 添加到面板 - 面板实现 ActionListener 与 Panel HAS A ActionListener

java - log4j RollingFileAppender 创建文件但将其保留为空

c++ - Qt C++ 最小化和最大化窗口

python - 限制 python 脚本的线程数