一 GIL (全局解释器锁) 1.什么是GIL:指的是全局解释器锁,本质也是一把互斥锁。主要是保证同一进程下的多个线程将不可能在同一时间使用解释器,从而保证了解释器的数据安全(同一个进程内多个线程无法实现并行但是可以实现并发)。 2.注意: 1):GIL仅存在cpython解释器中,其他解释器不存在 ...
分类:
编程语言 时间:
2019-08-14 16:44:37
阅读次数:
119
第16课-信号量互斥编程 16.1 公示栏问题(问题引入) 1. 问题描述 这里面我们举一个小例子。在一个班级里就有一个公示栏,A同学想写“数学课考试”,B同学想写“英语课取消”。但是有一个时间,A同学只写下了“数学课”三个字,没来得及写后面的内容就出去了,但是这个时候B同学来写下了“英语课取消”。 ...
分类:
其他好文 时间:
2019-08-14 14:25:12
阅读次数:
95
前言 一般情况下,只要涉及到多线程编程,程序的复杂性就会显著上升,性能显著下降,BUG出现的概率大大提升。 多线程编程本意是将一段程序并行运行,提升数据处理能力,但是由于大部分情况下都涉及到共有资源的竞争,所以修改资源 对象时必须加锁处理。但是锁的实现有很多种方法,下面就来一起了解一下在C#语言中几 ...
分类:
编程语言 时间:
2019-08-14 00:07:40
阅读次数:
258
队列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
所谓的临界区:是指进程中的一段需要访问共享资源并且当另一个进程处于相应代码区域时便不会被执行的代码区域对于临界区的管理的必须要满足一下的四个要求:互斥:同一时间临界区中最多存在一个线程Progress:如是一个线程想要进入临界区,那么它最终会成功有限等待:如果一个线程i处于入口区,那么在i的请求被接... ...
分类:
编程语言 时间:
2019-08-10 17:06:30
阅读次数:
82
操作系统发展史(主要的几个阶段) 初始系统 1946年第一台计算机诞生,采用手工操作的方式(用穿孔卡片操作) 同一个房间同一时刻只能运行一个程序,效率极低(操作一两个小时,CPU一两秒可能就运算完了) 联机批处理系统 脱机批处理系统 多道程序系统 1. 空间上的复用 ? 多个程序公用一套计算机硬件 ...
分类:
编程语言 时间:
2019-08-09 23:50:31
阅读次数:
132
并发编程 一,操作系统发展史 输入输出设备>>>:IO操作即(input和output) 手工操作穿孔卡片 批处理(磁带) 脱机批处理系统 手工操作穿孔卡片 批处理(磁带) 脱机批处理系统 一步步的优化,其实都是在提高计算机CPU利用率的问题(问题在于时串行并且没有空间上的复用) 多道技术 多个程序 ...
分类:
其他好文 时间:
2019-08-09 21:58:57
阅读次数:
130
操作系统发展史 发展史1. 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。2. 20世纪50年代后期,出现人机矛盾:手工操作的慢速度和计算机的高速度之间形成了尖锐矛盾,手工操作方式已严重损害了系统资源的利用率(使资源利用率降为百分之几, ...
分类:
系统相关 时间:
2019-08-09 21:42:34
阅读次数:
157
今日内容: 1.计算机发展史(理论) 2.进程(理论) 3.创建进程的俩种方式 4.进程join方法 5.进程对象及其他方法 6.进程间数据是相互隔离的 7.守护进程 8.互斥锁 一.计算机发展史 1.操作系统发展史 1.第一带计算机 真空管和穿孔卡片 没有进程 没有操作系统 2.第二代计算机 70 ...
分类:
其他好文 时间:
2019-08-09 21:17:04
阅读次数:
98