Go并发编程之美-Load/Store操作

加多 2019-02-15

java 线程 同步 多线程 编程

一、前言

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

二、Load/Store操作

go中的Load和Store提供了原子性的读取和修改变量的功能,那么什么是原子性那?比如int64 类型的变量M,在字节长为32的计算机中,读取该变量M需要两次读取(比如先读取高32位,然后在读取底32位),写入的时候也是一样。正常情况下读取变量M的时候并没有加什么额外的措施,多个线程可以同时读写该变量的高32和底32位。

比如线程A读取变量M的高32时候,线程B在修改变量M的低32位,那么就会造成线程A读取的变量的M的高32位是原来的值,低32位是线程B修改后的值,从而导致脏数

登录 后评论
下一篇
我是小助手
32695人浏览
2019-07-31
相关推荐
Go并发编程之美-CAS操作
1021人浏览
2019-02-15 19:31:20
go并发编程之美(一)
1379人浏览
2019-02-07 11:21:55
并发编程网线下沙龙
634人浏览
2017-05-23 16:14:31
Java并发编程之美
2828人浏览
2018-09-30 15:56:24
内存屏障
683人浏览
2016-04-11 10:46:55
[阅读笔记]Go语言并发之美
825人浏览
2016-05-17 11:10:32
内存屏障
636人浏览
2017-05-22 17:34:14
Go并发编程之美-互斥锁
620人浏览
2019-02-12 13:56:43
Go并发编程之美-读写锁
817人浏览
2019-02-13 10:06:39
Go并发编程之美-条件变量
954人浏览
2019-02-15 19:30:53
Java内存模型
298人浏览
2019-04-09 16:04:40
0
2
0
1082