【问题标题】:Sharing std::vector of pointers through threads通过线程共享指针的 std::vector
【发布时间】:2019-04-10 16:24:30
【问题描述】:

我想通过线程共享一个 std::vector 指针。每个线程都应该能够获取或删除指针并将其从向量中删除。我怎样才能使这个线程安全,C++ 标准库中是否有任何东西可以做到这一点?

【问题讨论】:

  • 欢迎来到 Stackoverflow!请查看How to Ask。如果您包含您尝试的代码,对其他人将非常有帮助!
  • XY 问题警告。您的问题可能有更好的解决方案,不涉及共享指针向量...
  • 如何使 any 共享数据线程安全的简短回答:每个线程在访问数据之前锁定一个互斥锁,每个线程将互斥锁锁定的时间最短可能,每个线程在解锁互斥锁之前确保数据处于一致的状态——其他线程可以安全地看到。请注意,“访问”仅包括查看数据。当另一个线程只完成一半的更改时,您通常不希望一个线程查看数据。

标签: c++ multithreading thread-safety c++-standard-library


【解决方案1】:

只需编写类并使用同步对象(关键部分)保护成员函数。

查看this 示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    相关资源
    最近更新 更多