首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
go 并发安全
订阅
少BB多做事
更多收藏集
微信扫码分享
微信
新浪微博
QQ
12篇文章 · 0订阅
深入掌握底层源码常见的 CAS 原子编程
1. 无锁编程产出背景 2. CAS 如何实现的无锁编程 3. CAS 使用中的 “ABA” 痛点 4. 如何解决 “ABA” 问题
CAS 无锁式同步机制
计算机系统中,CPU 和内存之间是通过总线进行通信的,当某个线程占有 CPU 执行指令的时候,会尽可能的将一些需要从内存中访问的变量缓存在自己的高速缓存区中,而修改也不会立即映射到内存。 而此时,其他线程将看不到内存中该变量的任何改动,这就是我们说的内存可见性问题。连续的文章中…
并发编程导论
随着硬件性能的迅猛发展与大数据时代的来临,并发编程日益成为编程中不可忽略的重要组成部分。简单定义来看,如果执行单元的逻辑控制流在时间上重叠,那它们就是并发(Concurrent)的。并发编程复兴的主要驱动力来自于所谓的“多核危机”。正如摩尔定律所预言的那样,芯片性能仍在不断提高…
Ready to Go - go中的锁
目录-----锁是什么?-----计算机中的锁-----golang锁概括-----runtime/sema(信号量)-----sync/atomic(原子操作)-----sync/mutex(互斥锁
并发优化 - 降低锁颗粒
减少锁的持有时间。 例如对一个方法加锁不如对其中的同步代码行加锁。 读写锁。 可只对锁操作加锁,读不加锁。这样读、读之间不互斥, 读、写和写、读互斥,可使用J.U.C中的ReadWriteLock。 减少锁颗粒。 如ConcurrentHashMap中对segment加锁,而不…
不使用锁来保证Golang的并发安全
go语言自身提供了一种不使用锁来解决并发安全的行为那就是atomic.Value, 我们将指针指向golang 1.4 文档。
golang RWMutex读写互斥锁源码分析
针对Golang 1.9的sync.RWMutex进行分析,与Golang 1.10基本一样除了将panic改为了throw之外其他的都一样。 RWMutex是读写互斥锁。锁可以由任意数量的读取器或单个写入器来保持。 RWMutex的零值是一个解锁的互斥锁。 提供写锁操作. 可…
GO千万级消息推送服务
公司此前有一个简单的文章订阅业务,但是采用的是定时拉取的模式,周期比较长,时效性不佳。于是考虑做一个长连接服务,主动把新产生的文章推送下去。 因为是web场景,所以优先考虑成熟的websocket协议,很多编程语言都有成熟的服务端开发框架。 假设有100万人在线,那么1篇文章…
如何设计并实现一个线程安全的 Map ?(下篇)
在上篇中,我们已经讨论过如何去实现一个 Map 了,并且也讨论了诸多优化点。在下篇中,我们将继续讨论如何实现一个线程安全的 Map。说到线程安全,需要从概念开始说起。 线程安全就是如果你的代码块所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果…
Go 并发编程、同步原语与锁
当提到并发编程、多线程编程时,我们往往都离不开『锁』这一概念,Go 语言作为一个原生支持用户态进程 Goroutine 的语言,也一定会为开发者提供这一功能,锁的主要作用就是保证多个线程或者 Goroutine 在访问同一片内存时不会出现混乱的问题,锁其实是一种并发编程中的同步…