博客
关于我
并发情况下三种线程/并发安全
阅读量:297 次
发布时间:2019-03-03

本文共 722 字,大约阅读时间需要 2 分钟。

1. 主存内小的共享变量线程安全

[JMM,工作内存,主存屏障,volatile+cas]

2.磁盘内数据库读写并发安全

[对version的cas]
因为读,写是通过执行sql语句实现的,而不是直接像指针访问主存一样,因而没有情况1的可见性问题,直接对version进行CAS即可
[由于数据库事务中又包含多个sql语句,所以在前面提到的针对单个sql语句竞争的基础上,更上一层要考虑事务隔离性问题,如脏读,不可重复读,幻读,,,前两者一般涉及update,delete,直接锁行即可,幻读需要锁表,事务级别对应对表行,表上锁的处理过程]
read commited解决了脏读也就解决了基本问题即对错问题,像是不可重复读,幻读则看业务场景需不需要,比如涉及钱转账的用户容忍度低,但像是热榜这种用户暂时读的不是最新数据也能接受,还有知乎用户点赞数。且一般情况下网站内的大部分数据[回答,文章,想法---哪怕是问题编辑这种公共的由于业务原因一般不会有高并发场景]只有其拥有者账号才能改,其它人并发能改的也就是点赞数,收藏数这种[即使是评论也只能该评论拥有者可以删除或发布],所以在实际业务场景中,对数据库某些内容的更新或修改高并发主要是数字。因为创造某东西或删除某东西一般是私有的,只有拥有者账户有权限。
[搜索关键字累积次数,阅读量,点赞数,转发数]
看来主要业务场景是搜索结果(但结果本身是读多写少的,用户主要是浏览)

建议看下面的文章

3.分布式缓存

[除了对缓存的并发读写安全外还要考虑将缓存内容更新到数据库中-因为缓存大小有限,需要结合LRU算法更新回数据库;而情况1是单个变量,而情况二默认磁盘大小无限]

建议看下面文章[都是转载的]

你可能感兴趣的文章
【Tinyproxy】CentOS7.X http代理tinyproxy的安装配置与使用
查看>>
php-foreach遍历一维数组
查看>>
php--自定义错误处理函数的使用方法
查看>>
php--异常处理主动抛出异常的使用方法
查看>>
php--简易的相册1
查看>>
php---xml基础知识
查看>>
php--class static
查看>>
php--匿名函数的使用
查看>>
php--json_decode
查看>>
php--class的工厂模式的示例
查看>>
php--模拟调用接口的代码
查看>>
php教程--案例20(用户登录)
查看>>
php教程--案例29(文件上传类)
查看>>
jQuery练习t76
查看>>
jQuery练习t78
查看>>
jQuery练习t79
查看>>
jQuery练习t80
查看>>
jQuery练习t81
查看>>
jQuery中使用animate方法替代其他动画方法
查看>>
jQuery练习t85
查看>>