![]() |
1
11
您需要以这种方式保护任何读/写操作。另一种方法是为创建包装类
|
![]() |
2
3
STL容器不是线程安全的(甚至调用
|
![]() |
3
2
在Visual Studio 2010中,可以使用 concurrent_vector 为此,它提供了同步增长功能。 This topic 列出每个并发容器。 请注意,这些也可以在英特尔的tbb中使用相同的语法+语义,因此可以跨平台使用。 |
![]() |
4
0
您需要使用互斥体来确保返回正确的索引 |
![]() |
5
0
最有力的保证方案是在所有这些操作上锁定整个向量(这意味着控制 每一个 从代码中的任何地方进行操作,这实际上意味着创建一个同步向量)。 可能是这样简单的事情可以为您的目的:
有一点是,如果线程推送3、3、3,那么返回的索引将是错误的,尽管它仍然是3的索引。这是否可以取决于你的目的。 另一个问题是,如果在这段时间内向量被弹出或以其他方式缩短,那么我们至多只能在上面的代码中添加注释,更糟的是,它的错误(当我们获得新闻大小后,它们再次弹出,然后访问[retval]将变为无效)。您需要考虑这种情况是否会发生(也许您从其他代码中知道它永远不会发生),以及如果会发生这种情况该怎么做。 如果这种限制对于您的用例来说太大了,那么生成完全同步的向量恐怕是我能想到的最好的方法。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 7 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 7 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 7 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 7 月前 |