处理并发的方式

并发,就会出现竞争问题,下面是几种常见的处理方式:

  • 加锁。所有的参与者竞争同一个锁,持有锁的参与者可以对资源进行操作。如果资源满足读和写可以分离的条件,可以使用读写锁来 提高读的并发数量。

  • 单线程顺序执行。Redis的处理IO的线程就是这样操作的,因为Redis属于I/O密集型应用而不是CPU密集型应用,所以虽然是单线程, CPU仍然不会是性能瓶颈,单线程的好处就在于处理请求的时候,一个一个按顺序来,所以无需加锁,可以简化实现。

  • 原子操作。参考Go中的 sync/atomic 包。使用加锁的方式,在持有锁的时间内,可以进行多个操作,而原则操作通常是一条语句, 例如把某个整数加上n,例如当某个数等于m时,复制为n等等。


微信公众号
关注公众号,获得及时更新

更多文章
  • Python Requests 简明教程
  • 密码技术简明教程(三):证书和TLS
  • 密码技术简明教程(二):散列、消息认证码和数字签名
  • SEO学习笔记
  • 密码技术简明教程(一):对称加密和非对称加密
  • Kubernetes 笔记
  • go mod 和 logrus 路径大小写的问题
  • Flask自动加载Blueprint
  • 在KVM里安装Minikube
  • 搞定面试中的系统设计题
  • Crontab + Sendmail实现定时任务并且通知
  • Nginx设置Referer来防止盗图
  • Graphviz dot简明教程
  • jQuery简明教程
  • Python RQ(Redis Queue)添加gevent支持