Go并发编程之美-CAS操作

加多 2019-02-15

java 函数 线程 高并发 同步 多线程 编程 CPU index thread

一、前言

go语言类似Java JUC包也提供了一些列用于多线程之间进行同步的措施,比如低级的同步措施有 锁、CAS、原子变量操作类。相比Java来说go提供了独特的基于通道的同步措施。本节我们先来看看go中CAS操作

二、CAS操作

go中的Cas操作与java中类似,都是借用了CPU提供的原子性指令来实现。CAS操作修改共享变量时候不需要对共享变量加锁,而是通过类似乐观锁的方式进行检查,本质还是不断的占用CPU 资源换取加锁带来的开销(比如上下文切换开销)。下面一个例子使用CAS来实现计数器

package main
import (
    "fmt"
    "sync"
    "sync/atomic"
)

var (
    counter int32          //计数器
    wg      sync.Wai
登录 后评论
下一篇
我是小助手
32512人浏览
2019-07-31
相关推荐
Go并发编程之美-Load/Store操作
1082人浏览
2019-02-15 19:31:43
Go并发编程之美-条件变量
954人浏览
2019-02-15 19:30:53
Java并发编程之美
2827人浏览
2018-09-30 15:56:24
GO安全并发之无锁原子操作
348人浏览
2017-08-30 15:29:00
Java并发编程之CAS
713人浏览
2017-05-22 18:26:00
Java并发编程之CAS
287人浏览
2017-04-04 10:27:00
[阅读笔记]Go语言并发之美
825人浏览
2016-05-17 11:10:32
并发编程网线下沙龙
634人浏览
2017-05-23 16:14:31
go并发编程之美(一)
1379人浏览
2019-02-07 11:21:55
Go并发编程之美-互斥锁
620人浏览
2019-02-12 13:56:43
Go并发编程之美-读写锁
817人浏览
2019-02-13 10:06:39
0
1
0
1020