一、GIL全局解释器锁 1. 什么是GIL全局解释器锁 GIL本质就是一把互斥锁,相当于执行权限 在Cpython解释器下,如果想实现并行可以开启多个进程 2. 为何要有GIL 我们首先要知道,一个多线程是怎么执行的,假设在一个进程中有三个线程,线程中是要运行的代码。 ①如果要运行代码,就必须要先获 ...
分类:
编程语言 时间:
2018-09-07 16:42:16
阅读次数:
168
一、GIL全局解释器锁 1、什么是全局解释器锁 GIL本质就是一把互斥锁,相当于执行权限,每个进程内都会存在一把GIL,同一进程内的多个线程,必须抢到GIL之后才能使用Cpython解释器来执行自己的代码,即同一进程下的多个线程无法实现并行,但是可以实现并发。 例如下面多个线程的执行过程: 多个线程 ...
分类:
编程语言 时间:
2018-09-07 15:58:12
阅读次数:
214
# 并发&并行 同步&异步 GIL 任务 同步锁 死锁 递归锁 # 并发:是指系统具有处理多个任务(动作)的能力 # 并行:是指系统具有 同时 处理多个任务(动作)的能力 # 同步:当进程执行到一个IO(等待外部数据)的时候,需要等待外部数据接收完 # 异步:当进程执行到一个IO(等待外部数据)的时... ...
分类:
其他好文 时间:
2018-08-18 10:33:20
阅读次数:
158
如果硬盘可能会出现锁死或坏道的故障,会造成SHELL命令的失效,包括reboot,powoff, shutdown,用正常的命令是没法完成重启的。 现象如下:# rebootbash: /sbin/reboot: Input/output error# shurdown -r nowbash: /s ...
分类:
其他好文 时间:
2018-08-16 19:38:16
阅读次数:
140
当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。 输入格式: 输入在第一行给出一个密码(长度不超过 20 的、不包含空格、Tab、回车的非空字符串)和一个正整数 N(≤ 10),分别是正确的密码和系统允许尝试的次数。随后每 ...
分类:
其他好文 时间:
2018-08-13 12:15:48
阅读次数:
141
锁标记如果过多,就会出现线程等待其他线程释放锁标记,而又都不释放自己的锁标记供其他线程运行的状况。就是死锁。 死锁的问题通过线程间的通信的方式进行解决。 线程间通信机制实际上也就是协调机制。 线程间通信使用的空间称之为对象的等待队列,则个队列也是属于对象的空间的。 Object类中又一个wait() ...
分类:
编程语言 时间:
2018-08-05 14:15:14
阅读次数:
180
一. 概述 通常来说,死锁都是应用设计问题,通过调整业务流程,数据库对象设计,事务大小,以及访问数据库的sql语句,绝大部分死锁都可以避免,下面介绍几种避免死锁的常用 方法. 1. 在应用中,如果不同的程序并发操作多个表,应尽量约定以相同的顺序来访问表,这样可以大大降低产生死锁的机会。按顺序对表进行 ...
分类:
数据库 时间:
2018-08-04 19:04:06
阅读次数:
271
死锁产生的条件: (1)互斥条件:一个资源在同一时刻只能被一个进程占有 (2)请求与保持:一个进程因请求资源发生阻塞时,对当前已占有的资源不释放 (3)不可剥夺:对于进程已获得的资源,在使用完成之前,不允许其他进程剥夺 (4)循环等待:循环等待资源的环形状态 myisam是deadlock free ...
分类:
数据库 时间:
2018-08-03 19:55:14
阅读次数:
195
原文:SQL Server 死锁的告警监控今天这篇文章总结一下如何监控SQL Server的死锁,其实以前写过MS SQL 监控错误日志的告警信息,这篇文章着重介绍如何监控数据库的死锁,当然这篇文章不分析死锁产生的原因、以及如何解决死锁。死锁(Dead Lock)的错误信息在sys.messages... ...
分类:
数据库 时间:
2018-08-03 10:40:08
阅读次数:
202
一. 什么时候使用表锁 对于INNODB表,在绝大部分情况下都应该使用行锁。在个别特殊事务中,可以考虑使用表锁(建议)。 1. 事务需要更新大部份或全部数据,表又比较大,默认的行锁不仅使这个事务执行效率低,可能造成其他事务长时间锁等待和锁冲突,这种情况考虑使用表锁来提高事务的执行速度(具我在sql ...
分类:
数据库 时间:
2018-08-02 20:36:50
阅读次数:
394