线程安全的解决方案(概念版本)

线程安全其实本质 讲的是内存的安全。

多个线程对统一资源的操作可能导致这个资源的数据不一致性。

举例说明:比如 张三有100块钱,现在线程A是要花50元,线程二是要存300元,当线程A花50元后,还没有内存值修改,线程二获取到100元+300,将400的值给到张三,此时线程二处理完成,张三有400元,而此时线程A100-50=50,将张三的钱改为了50,最终张三有50块钱,此时数据一致性没有得到保证,出了问题。

解决办法:

一、将数据放入栈中

        比如局部变量是由操作系统决定的,只属于某一个方法

二、线程拷贝

        只处理自己的变量,将变量复制一份,只处理自己的,不处理别人的

三、只读

        规定只能读,不能改

四、悲观锁

        处理之前先加锁,处理完成后再解锁

五、乐观锁

        先获取数据,处理完,在获取一下数据看是否和之前的修改版本号是否一致一致,如果一直再提交

在golang中,可以使用channel来处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值