通过线程共享指针的 std::vector
Posted
技术标签:
【中文标题】通过线程共享指针的 std::vector【英文标题】:Sharing std::vector of pointers through threads 【发布时间】:2019-04-10 16:24:30 【问题描述】:我想通过线程共享一个 std::vector 指针。每个线程都应该能够获取或删除指针并将其从向量中删除。我怎样才能使这个线程安全,C++ 标准库中是否有任何东西可以做到这一点?
【问题讨论】:
欢迎来到 ***!请查看How to Ask。如果您包含您尝试的代码,对其他人将非常有帮助! XY 问题警告。您的问题可能有更好的解决方案,不涉及共享指针向量... 如何使 any 共享数据线程安全的简短回答:每个线程在访问数据之前锁定一个互斥锁,每个线程将互斥锁锁定的时间最短可能,每个线程在解锁互斥锁之前确保数据处于一致的状态——其他线程可以安全地看到。请注意,“访问”仅包括查看数据。当另一个线程只完成一半的更改时,您通常不希望一个线程查看数据。 【参考方案1】:只需编写类并使用同步对象(关键部分)保护成员函数。
查看this 示例。
【讨论】:
以上是关于通过线程共享指针的 std::vector的主要内容,如果未能解决你的问题,请参考以下文章
在多线程 C++ 程序中使用 std::vector 时应用程序崩溃