Go单线程运行也会有并发问题 (colobu.com)

【简介】

一个Go大佬群中严肃的讨论了一个问题:Go程序单线程多goroutine访问一个map会遇到并发读写panic么?

答案是肯定的,因为出现了这个问题所以大家才在群中讨论。

为什么呢?因为单线程意味着并行单元只有一个(多线程也可能并行单元只有一个),但是多goroutine意味着并发单元有多个,如果并发单元同时执行,即使是单线程,可能就会产生数据竞争的问题,除非这些goroutine是顺序执行的。

点击查看原文 >>

@技术头条 2023-12-11 23:04 / 原作者微博:@colobu / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
第一性原理思考:解决问题的通用框架(续) (blog.devtang.com)
本文深入探讨了几种思维框架,包括28原理、谬误推导和终局思维等,帮助在决策中聚焦关键因素,判断信息真伪。文章还列举了常见误区,如误把相关性当因果、从众心理和情绪化决策等,提醒在信息泛滥中保持清晰的逻辑思维。通过案例分析,这些思维模式能有效提升问题解决和决策的效率。
by @技术头条 2024-11-02 16:25 查看详情
第一性原理思考:解决问题的通用框架 (blog.devtang.com)
本文介绍了解决问题的通用框架,基于“第一性原理”思考,分为信息收集、建模、判断和策略迭代四步。通过广泛收集经验与原始数据,建立问题模型,量化核心指标并不断优化策略,可以逐步解决复杂问题。框架虽无法保证执行到位,但帮助接近真实问题,为复杂决策提供可靠支持。
by @技术头条 2024-11-02 16:20 查看详情
图解Blink-Tree:B+Tree的一种并发优化结构和算法 (www.codedump.info)
本文介绍了 Blink-Tree,这是一种 B+Tree 的并发优化结构。通过引入 high key 和 link 指针,解决了并发访问时的性能问题,特别适用于高并发环境的存储引擎优化。如果你对数据库存储引擎感兴趣,这篇文章不容错过!
by @技术头条 2024-09-09 23:46 查看详情
Nginx 反代 SSL_do_handshake 问题解决思路 (dusays.com)
遇到 Nginx 反代时的 SSL_do_handshake 错误?本文深入分析了该问题的原因,并提供了详细的解决方案,包括如何配置 Nginx 以避免 502 错误。如果你在运维中遇到 SSL 问题,这篇文章能帮你快速解决!
by @技术头条 2024-09-09 23:35 查看详情
Java程序调用外网API时CA问题 (lisenhui.cn)
Java 安全设置问题常常让开发者头疼,特别是与 cacerts 证书库相关的配置。本文详细解读了 Java 中的 cacerts 文件问题,帮助你排除常见错误,并提供了实用的解决方案。通过这些技巧,你可以更好地管理证书库,提升应用安全性。如果你在 Java 开发中遇到证书问题,千万不要错过!
by @技术头条 2024-09-08 23:22 查看详情
ubuntu 克隆 netplan dhcp ip 冲突问题 (www.frytea.com)
本文介绍了如何解决在Ubuntu虚拟机克隆过程中出现的netplan DHCP IP冲突问题。作者发现冲突的原因是/etc/machine-id在克隆时保持不变,导致系统分配相同的IP地址。通过在/etc/netplan/xx-installer-config.yaml中添加dhcp-identifier: mac,可以确保每次克隆时获得唯一的IP地址。文章还解释了/etc/machine-id和/sys/class/dmi/id/product_uuid的作用。
by @技术头条 2024-08-06 08:15 查看详情
对“技术质问产品的几个常见问题”的回答 (blog.csdn.net)
给某大厂的技术新人做了一个关于产品思维的分享,提前收集了一些困惑,贴几条提及最多的,稍微聊一下。

哦对了,先帮产品说句话——技术同学,千万别简单地用“那个产品是傻X”来回答以下问题。这是因为,作为技术,如果你总觉得和你配合的产品都是傻X,那大概率,别人会觉得你也是——要不然,为什么选择与傻X共事?所谓 “若,我看周围皆傻X,料,世人看我亦如是”。
by @技术头条 2024-05-05 23:33 查看详情
sqlite并发读写的演进之路 (www.codedump.info)
本文梳理sqlite并发读写方案的演进之路。
by @技术头条 2024-03-21 23:26 查看详情
聊聊 Go 的边界检查消除技术 (colobu.com)
在翻译的从慢速到SIMD一文中, SourceGraph工程师其中的一个优化就是边界检查消除(BCE,bounds check elimination)技术,同时他也抛给了读者一个问题:

为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]?

本文第一部分先回答这个问题。 第二部分介绍更好的边界检查消除方法。 第三部分再全面梳理Go的边界检查消除技术。
by @技术头条 2024-03-21 23:00 查看详情
Go 中的高速数据包处理:从 net.Dial 到 AF_XDP (colobu.com)
最近编写了一个Go程序,向数百万个IP地址发送ICMP ping消息。显然,希望这个过程能尽可能快速高效地完成。因此,这促使我研究各种与网络栈交互和快速发送数据包的各种方法。这是一个有趣的旅程,所以在本文中,我将分享一些学习成果,并记录下来供将来参考:)你将看到,仅使用8个内核就可以达到1880万数据包/秒。这里还有一个GitHub仓库,其中包含了示例代码,可以方便地跟随学习。
by @技术头条 2024-03-21 22:55 查看详情