|
|
1
4
如果你检查 source code of List 您将看到它在内部对数组进行操作。add方法扩展数组大小并插入新项:
现在假设您同时有10个和2个线程插入的数组-都将数组扩展为11个,在索引11处有一个线程插入,在索引11处有其他覆盖项。这就是为什么你会得到11而不是12的清单,你会失去一个项目。 |
|
2
2
好吧,让我们看看
看起来不错。但是让我们考虑一下,在另一个线程成功执行第2行之前,一个特别不走运的线程已经超过了这段代码的第1行,从而导致
所以,尽管你“证明”它不会抛出异常,我还是发现了一个明显的竞赛,在检查代码大约2分钟后,会导致一个。 一 代码取自 reference source 这当然意味着它可能与实际运行的代码不完全相同,因为开发人员 自由的 改变他们的实施,只尊重 文件化的 保证。 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
H3007 · 并发运行python子进程似乎不是并发的 2 年前 |
|
|
The Oddler · TVar会阻止读取直到更改吗? 2 年前 |
|
|
Wang Tuma · 使用信号量的c++并发问题:按顺序打印 2 年前 |
|
|
Marcel Batista · 在不同线程中更新密钥时的字典线程安全 2 年前 |
|
|
rico · 当volatile关键字真的是必要的? 2 年前 |