重点: 1、读锁共享 2、写锁互斥 3、读写锁互斥 锁降级:将写锁降级为读锁。(先获取写锁,再获取读锁,再释放写锁,最后释放读锁) 造成锁降级的原因:出于性能考虑,一般情况下,都将锁定的动作,精确到具体的语句块,在两个锁的语句块之间,有可能线程的交替执行,造成线程安全问题。 解决的方法: 1、将锁的 ...
分类:
其他好文 时间:
2019-08-17 00:43:26
阅读次数:
118
原文: http://blog.gqylpy.com/gqy/229 " 一、锁机制: multiprocess.Lock 上篇博客中,我们千方百计实现了程序的异步,让多个任务同时在几个进程中并发处理,但它们之间的运行没有顺序。尽管并发编程让我们能更加充分的利用io资源,但是也 ...
分类:
编程语言 时间:
2019-08-16 19:12:36
阅读次数:
114
原文: http://blog.gqylpy.com/gqy/229 " 一、锁机制: multiprocess.Lock 上篇博客中,我们千方百计实现了程序的异步,让多个任务同时在几个进程中并发处理,但它们之间的运行没有顺序。尽管并发编程让我们能更加充分的利用io资源,但是也 ...
分类:
编程语言 时间:
2019-08-16 18:42:34
阅读次数:
136
2019年8月15日星期四 一. 线程互斥方式 - 互斥锁。 1. 什么是互斥锁?特点如何? 互斥锁是专门用于处理线程互斥的一个方式,它有两种状态:上锁状态/解锁状态。 特点:如果处理上锁状态,则不能再上锁,直到解锁为止才能再上锁。如果是处于解锁状态,则不能再解锁了,直到上锁了才能再解锁。 2. 关 ...
分类:
其他好文 时间:
2019-08-15 19:25:51
阅读次数:
98
并发编程(三) >>>思维导图>>>中二青年 GIL全局解释器锁 Cpython解释器:python解释器有很多种,最常见的就是Cpython解释器 GIL本质也是一把互斥锁 将并发变成串行牺牲效率保证数据的安全 用来阻止同一个进程下的多个线程的同时执行 (同一个进程内多个线程无法实现并行但是可以实 ...
分类:
其他好文 时间:
2019-08-14 16:50:15
阅读次数:
85
一 GIL (全局解释器锁) 1.什么是GIL:指的是全局解释器锁,本质也是一把互斥锁。主要是保证同一进程下的多个线程将不可能在同一时间使用解释器,从而保证了解释器的数据安全(同一个进程内多个线程无法实现并行但是可以实现并发)。 2.注意: 1):GIL仅存在cpython解释器中,其他解释器不存在 ...
分类:
编程语言 时间:
2019-08-14 16:44:37
阅读次数:
119
队列queue 多应用在多线程中,对于多线程访问共享变量时,队列queue是线程安全的。从queue队列的实现来看,队列使用了1个线程互斥锁(pthread.Lock()),以及3个条件标量(pthread.condition()),来保证了线程安全。 ?self.mutex互斥锁:任何获取队列的状 ...
分类:
编程语言 时间:
2019-08-13 00:26:11
阅读次数:
111
10.1.goroutine goroutine的使用 10.2.waitgroup WaitGroup直译为等待组,其实就是计数器,只要计数器中有内容将一直阻塞 WaitGroup有三种方法 Add(delta int)表示向内部计数器添加增量(delta),其中参数delta可以使负数 Done ...
分类:
其他好文 时间:
2019-08-11 15:21:22
阅读次数:
82
操作系统发展史(主要的几个阶段) 初始系统 1946年第一台计算机诞生,采用手工操作的方式(用穿孔卡片操作) 同一个房间同一时刻只能运行一个程序,效率极低(操作一两个小时,CPU一两秒可能就运算完了) 联机批处理系统 脱机批处理系统 多道程序系统 1. 空间上的复用 ? 多个程序公用一套计算机硬件 ...
分类:
编程语言 时间:
2019-08-09 23:50:31
阅读次数:
132
操作系统发展史 发展史1. 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。2. 20世纪50年代后期,出现人机矛盾:手工操作的慢速度和计算机的高速度之间形成了尖锐矛盾,手工操作方式已严重损害了系统资源的利用率(使资源利用率降为百分之几, ...
分类:
系统相关 时间:
2019-08-09 21:42:34
阅读次数:
157