<?php class Order{ /** * 阻塞模式(后面的进程会一直等待前面的进程执行完毕) */ public function createOrder1(){ $file = fopen(__DIR__.'/lock.txt','w+'); //加锁 if(flock($file,LOC... ...
分类:
Web程序 时间:
2019-10-11 23:52:15
阅读次数:
211
数据库中的共享锁与排他锁 共享锁,又称为读锁,获得共享锁之后,可以查看但无法修改和删除数据。 排他锁,又称为写锁、独占锁,获得排他锁之后,既能读数据,又能修改数据。 为什么要加锁 很多人都知道,锁是用来解决并发问题的,那么什么是并发问题呢?并发情况下,不加锁会有什么问题呢? 拿生活中的洗手间举例子, ...
分类:
其他好文 时间:
2019-10-11 23:42:01
阅读次数:
126
一、队列 1.队列类型 FIFO:先进先出 LIFO:后进先出(等同于栈) 优先级队列 双端队列:LIFO和FIFO结合,可以从队首和队尾添加和删除元素 循环队列:队首和队尾相连(可用来解决假溢出) 2.Python自带Queue模块【线程不安全,需加锁】 支持三种队列类型: FIFO(queue. ...
分类:
编程语言 时间:
2019-10-11 12:42:29
阅读次数:
92
1. 锁分类 MySQL中主要分为全局锁、表级锁和行锁三类。本篇主要涉及全局锁和表级锁。 2. 全局锁 全局锁是对整个数据库实例进行加锁。 Flush table with read lock(FRTWRL)该命令用于加全局锁。使用该命令之后,整个库处于只读状态,不能执行数据的增删改查、建表、修改表 ...
分类:
数据库 时间:
2019-10-10 17:21:10
阅读次数:
88
Java遍历List并删除某些元素 ? 在阿里的Java编程规约中有一条:【强制】不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。 ? 这里不禁要问为什么? ? 首先来试一下,遍历List时删除元 ...
分类:
编程语言 时间:
2019-10-08 22:00:47
阅读次数:
122
前言: synchronize会使用,但是对于深层次的知识,不是很清楚,故整理一篇博客。 简介: 能够保证在同一时刻,最多只有一个线程执行该端代码,以达到保证并发安全效果。 两种用法: 对象锁 类锁 对线程访问同步方法的7种情况: synchronize性质: 可重入 不可中断 原理: 加锁原理 可 ...
分类:
其他好文 时间:
2019-10-07 09:44:28
阅读次数:
84
源博客:https://blog.csdn.net/qiufenpeng/article/details/81745266 最近学习QT写一个小界面想屏蔽鼠标点击,就百度了一下。原来只要一个函数就搞定了。。QT果然强大。 如果想通过点击一个按钮自动加锁或者解锁鼠标事件 在头文件中定义一个bool变量 ...
分类:
其他好文 时间:
2019-10-05 22:49:09
阅读次数:
482
一、CAS概念 1. 悲观锁:一个线程加锁后其他线程会挂起,直到持有锁的线程释放锁,悲观锁从最坏的情况考虑问题。独占锁是一种悲观锁,例如synchronized关键字加锁,例如可重入锁ReentrantLock 2. 乐观锁:不加锁,多个线程共同执行,如果发生了冲突,就去重试(do...while. ...
分类:
其他好文 时间:
2019-10-05 18:18:43
阅读次数:
81
为什么需要分布式锁 如上图, 在分布式系统中,订单模块为了迎战高并发,订单服务被横向拆分,拆分成了不同的进程,就像上图,两个人同时访问订单服务,然后订单系统1和订单系统2共用一个Mysql当成数据库,经过他们查询发现仅有一件商品,所以他们自个认为都可以下单 如果不加锁限制,可能会出现库存减为负数的情 ...
分类:
其他好文 时间:
2019-10-05 12:47:56
阅读次数:
125
我们可以利用synchronized关键字来对程序进行加锁。它既可以用来声明一个synchronized代码块,也可以直接标记静态方法或者实例方法。 synchronized怎么实现线程的同步? 早期的synchronized属于重量级锁,依赖于mutex lock实现,线程之间的切换涉及到 用户态 ...
分类:
其他好文 时间:
2019-10-04 19:02:50
阅读次数:
69