- 什么是资源竞争:
资源竞争就是比如有两个线程A和B,两个线程都对一个变量a进行加1,每个线程都要执行100次,此时a为0,理论上结束之后a为200,但是应为资源竞争的存在,a可能会小于200, 因为cpu在处理两个线程的时候, 是采用雨露均沾的方式, 可能在线程A刚刚将a值+1还没来得及将新值赋给a时, 就开始处理线程B了, 因此当线程B执行完全部的a+=1的操作后, 可能又会开始对线程A的未完成的操作, 而此时的操作停留在了完成运算未赋值的那一步, 因此在完成对a的赋值后, 就会覆盖掉之前线程A对a的+1操作 - redis解决资源竞争:
redis里面有一个watch命令,这个命令可以解决这个问题,假设我们对一个键a执行watch,然后执行事务,由于watch的存在,他会监测键a,当a被修该之后,后面的事务就会执行失败,这就确保了多个连接同时来了,都监测着a,只有一个能执行成功,其他都返回失败
redis解决资源竞争
最新推荐文章于 2021-11-08 14:33:57 发布