![]() |
1
11
您需要以这种方式保护任何读/写操作。另一种方法是为创建包装类
|
![]() |
2
3
STL容器不是线程安全的(甚至调用
|
![]() |
3
2
在Visual Studio 2010中,可以使用 concurrent_vector 为此,它提供了同步增长功能。 This topic 列出每个并发容器。 请注意,这些也可以在英特尔的tbb中使用相同的语法+语义,因此可以跨平台使用。 |
![]() |
4
0
您需要使用互斥体来确保返回正确的索引 |
![]() |
5
0
最有力的保证方案是在所有这些操作上锁定整个向量(这意味着控制 每一个 从代码中的任何地方进行操作,这实际上意味着创建一个同步向量)。 可能是这样简单的事情可以为您的目的:
有一点是,如果线程推送3、3、3,那么返回的索引将是错误的,尽管它仍然是3的索引。这是否可以取决于你的目的。 另一个问题是,如果在这段时间内向量被弹出或以其他方式缩短,那么我们至多只能在上面的代码中添加注释,更糟的是,它的错误(当我们获得新闻大小后,它们再次弹出,然后访问[retval]将变为无效)。您需要考虑这种情况是否会发生(也许您从其他代码中知道它永远不会发生),以及如果会发生这种情况该怎么做。 如果这种限制对于您的用例来说太大了,那么生成完全同步的向量恐怕是我能想到的最好的方法。 |
![]() |
llewmills · 根据数字是否为整数过滤数值向量[重复] 2 年前 |
![]() |
Rocket Procd · 在c中向向量插入元素++ 2 年前 |
![]() |
Daniel · 为什么我不能手动定义模板参数? 2 年前 |
![]() |
Swantewit · 将数组值推送到Rust中的向量 2 年前 |
![]() |
Giffyguy · 如何限制在构造向量后调用'resize()'? 2 年前 |
![]() |
clarkk · 当声明向量时,(1)是什么意思? 2 年前 |
![]() |
Loui Augst · 仅在局部X轴上将游戏对象指向另一个对象 2 年前 |
![]() |
F.A. · 从int向量中附加整数的字符串不会打印任何内容 2 年前 |