202106-19 Golang全局变量加锁的问题解决 如果全局变量只读取那自然是不需要加锁的如果全局变量多进程读,多进程写,那自然是需要加读写锁的但是如果全局变量只有一个进程写,其他进程读呢?如果采用COW的方式,写进程只是通过单次赋值的方式来更新变量,是否就可以不加锁了呢?就第三种情况而言:当然我们通过gobuild-race或者gorun-race就会出现WARNING:DATARACE。但是出现datarace就证明一定有问题么?其实核心点在于这个赋值是否是原子的。也就是说是... 继续阅读 >
202102-01 MySQL 加锁控制并发的方法 前言锁总体可以分为乐观锁和悲观锁,简单说,乐观锁用版本号控制,悲观锁用锁控制。下面是待会要用来测试的数据#添加一个user表CREATETABLE`users`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'ID',`name`varchar(255)NOTNULLCOMMENT'姓名',PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;#插入3条数据INSERTINTO`users`(`id`,`name`)VALUES(1,'雪山飞猪'),(2,'chenqionghe')... 继续阅读 >
202012-17 浅谈redis加锁常用几种方式 一、incr加锁<?php$redis=newRedis();$redis->connect('127.0.0.1');$redis->multi();$redis->incr('number');//$redis->decr('number');//$redis->expire('number',-1);var_dump($redis->get('number'));var_dump($redis->ttl('number'));二、setnx加锁<?php$redis->setnx('name','felix');var_dump($redis->get('name'));var_dump($redis->ttl('name'));三、set加锁<?php$redis->set('like','chuangxi',['nx'... 继续阅读 >