当前位置: 首页 > 知识库问答 >
问题:

如果运行时不是抛出(“并发映射写入”)而是panic(“并发映射写入”),会发生什么

乐正明辉
2023-03-14

如何从并发的映射写入中恢复?

正如icza所说:

共有1个答案

章琛
2023-03-14

运行库不能检测竞争,但它可以检测映射的内部状态何时被数据竞争破坏,这就是throw(“并发映射写入”)throw(“并发映射读取和映射写入”)的作用(throw在运行库中广泛使用,以便在没有安全方法继续时中止程序)。在这里使用panic意味着您可以从这种情况中恢复,但是无法恢复,因为已经知道程序状态已经损坏。

 类似资料:
  • 问题内容: 如何从“并发映射读取和映射写入”的运行时恐慌中恢复?通常,恢复时的延迟似乎不起作用。这是为什么? 我知道您不应该在并发上下文中使用地图,但是仍然:如何在此处恢复? 例: 请添加恢复代码。:) 问题答案: 恢复在这里不起作用,因为您遇到的不是紧急状态。 Go 1.6向 运行时添加了轻量级的并发滥用地图检测功能: 运行时增加了轻巧,尽力而为的检测并发滥用地图的功能。与往常一样,如果一个go

  • 问题内容: 在具有并发访问的程序中使用映射时,是否需要在函数中使用互斥体来 读取 值? 问题答案: 读者众多,没有作家可以: https://groups.google.com/d/msg/golang- nuts/HpLWnGTp-n8/hyUYmnWJqiQJ 一个作家,没有读者是可以的。(否则,地图不会太好。) 否则,如果至少有一个作家,而作家或读者至少还有一个,那么 所有 读者 和 作家都

  • 我得到一个包含100行数据的表。(Sqlite3和Linux) 这些行上的每个都由多个进程更新。既然同一行不能修改两次(一个进程“拥有”一行并且只有一行),你认为我真的需要使用事务吗?

  • 我想我在并发s3写入方面有问题。两个(或更多)进程同时将几乎相同的内容写入相同的s3位置。我想确定控制这种情况的并发规则。 按照设计,除了一个进程外,所有进程都会在写入s3时被杀死。(我说过,他们写的内容“几乎”相同,因为除了一个进程之外,所有进程都被杀死了。如果所有进程都被允许生存,他们最终会写相同的内容。) 我的理论是,被终止的进程在s3上留下了一个不完整的文件,而另一个文件(可能已完全写入)

  • 我只想知道,如果读取器和写入器线程访问ConcurrentHashMap的同一段,会发生什么情况。 情况1:读取器线程首先读取值时。 情况2:写入线程更新值,读取线程获取值。

  • 根据Go博客, 地图对于并发使用是不安全的:它没有定义当您同时读写地图时会发生什么。如果需要从并发执行的goroutines读取映射和向映射写入映射,则访问必须通过某种同步机制进行调解。(来源:https://blog.golang.org/go-maps-in-action) 有人能详细说明一下吗?跨例程的并发读取操作似乎是允许的,但是如果尝试读取和写入同一个键,并发读取/写入操作可能会生成竞争