1.使用multiprocessing模块的Queue实现数据传递 2.使用multiprocessing模块的Pipe实现数据传递 3.使用multiprocessing模块的Manager实现数据共享 ...
分类:
系统相关 时间:
2018-09-23 18:09:01
阅读次数:
191
简介: 读写锁与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享。 读写锁特性: 1. 读写锁是“写模式加锁”时,解锁前,所有对该锁加锁的线程都会被阻塞。 2. 读写锁是“读模式加锁”时,如果线程以读模式对其加锁会成功。如果线程以写模式加锁会阻塞。 3. 读写锁是“读模式加锁”时,如果 ...
分类:
编程语言 时间:
2018-09-23 00:47:16
阅读次数:
183
场景: 一个商品有库存,下单时先检查库存,如果>0,把库存-1然后下单,如果<=0,则不能下单,事务包含两条sql语句: 在并发情况下,可能会把库存减为负数(两个进程同时select出来的都>0,然后都会执行update),怎么办呢? 方法1: InnoDB支持通过特定的语句进行显示加锁: sele ...
分类:
其他好文 时间:
2018-09-19 19:55:37
阅读次数:
160
1. redis加锁分类 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时,如果返回的数大于 1 ,说明这个锁正在被使用当中。 3. 第二种锁SETNX 这种加锁 ...
分类:
其他好文 时间:
2018-09-17 11:47:47
阅读次数:
207
1. 条件变量+互斥锁 实现 生产者-消费者模型: 2. 信号量 实现 生产者-消费者模型: ...
分类:
其他好文 时间:
2018-09-16 00:36:10
阅读次数:
191
目前广泛使用的是MyISAM和InnoDB两种引擎: MyISAM MyISAM引擎是MySQL 5.1及之前版本的默认引擎,它的特点是: 不支持行锁,读取时对需要读到的所有表加锁,写入时则对表加排它锁 不支持事务 不支持外键 不支持崩溃后的安全恢复 在表有读取查询的同时,支持往表中插入新纪录 支持 ...
分类:
其他好文 时间:
2018-09-15 16:40:43
阅读次数:
199
Mutex(互斥锁) Lock()加锁,Unlock()解锁 适用于读写不确定,并且只有一个读或者写的场景 例: go package main import ( "sync" "time" ) var ( l sync.Mutex i int ) func increment() { l.Lock ...
分类:
编程语言 时间:
2018-09-14 20:05:10
阅读次数:
165
背景说明 在程序开发过程中,通常会遇到需要独占式的访问一些资源的情形,比如商品秒杀时扣减库存。这时就需要对资源加锁。实现锁的方式有很多,比如数据库锁、文件锁等等。本文简单介绍PHP中使用redis来实现加锁和解锁。实现方式参考了redis官方文档。 示例代码 代码环境:单redis实例,PHP5.6 ...
分类:
Web程序 时间:
2018-09-14 13:58:32
阅读次数:
181
本文旨在两个线程交替运行,不多哔哔直接看代码吧 该实现的原理也非常简单,定义一个对象,因为一个对象有且只有一个锁,所以让两个线程循环让此对象解锁->加锁,从而达到线程交替运行的目的; 个人觉得此方法还不够好,后续总结了再继续补充,还望看到的大佬们多指点指点! ...
分类:
编程语言 时间:
2018-09-13 01:11:53
阅读次数:
216