C#/Java lock(object) 的 c++ 模拟

标签 c++ multithreading thread-safety

在 C#/Java 中,我可以轻松地使任何线程不安全的代码成为线程安全的。我只是介绍特殊的“lockObj”并像这样使用它:

    private object lockObj = new object();

    void ThreadSafeMethod()
    {
        lock (lockObj)
        {
            // work with thread-unsafe code
        }
    }

(有些人只是使用 lock (this) 但这是 not recomended )

什么是最简单和最快的 C++ 等价物?我可以使用 C++11。

最佳答案

如果可以使用 C++11,则使用 std::mutex(如果不能使用 C++11,则使用 boost::mutex)

private:
    std::mutex m;

    void ThreadSafeMethod()
    {
        std::lock_guard<std::mutex> lock(m);
        // work with thread-unsafe code
    }

关于C#/Java lock(object) 的 c++ 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002388/

相关文章:

c++ - c++程序中的数据库连接检查

c++ - 从 std::set::insert() 返回迭代器是常量?

c++ - boost fibers work_stealing 屏障导致段错误

java - 确保一个变量只设置一次

c# - 如何在多线程环境中只执行一次代码块?

python - subprocess.Popen 不是线程安全的吗?

c++ - 使用C在文本中搜索一个词,并显示该词后的信息

windows - 使用 FileSystemWatcher 在 Windows 服务中一次处理多个文件时出现问题

c# - 使用 Reactive Extensions 同时处理流时如何限制缓冲

c++ - 如何处理具有完全不同构建系统的第三方库?