摘要: Event事件 用来同步线程之间的状态。 举个例子: ​ 你把一个任务丢到了子线程中,这个任务将异步执行。如何获取到这个任务的执行状态 解决方法: 1. 如果是拿到执行结果 我们可以采用异步回调, 2. 在这里我们采用另外一种方法来做:Event Event事件 第一阶段:采用轮询方式去获取线程状态 阅读全文
posted @ 2019-07-05 18:50 Hello_Jack 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 同步异步 阻塞:进程遇到IO操作,导致任务无法继续执行其他代码,称为阻塞。 非阻塞:程序在正常运行没有遇到IO操作,或者通过某种方式使程序即时遇到了也不会停在原地,还可以执行其他操作,以提高CPU的占用率 阻塞、非阻塞:指程序的运行状态 并行、并发、串行:处理任务的方式 同步:提交任务后需要在原地等 阅读全文
posted @ 2019-07-05 18:02 Hello_Jack 阅读(144) 评论(0) 推荐(0) 编辑
摘要: [TOC] 线程池与进程池 池:表示容器。线程池就是存放线程的容器,进程池就是存放进程的容器 为什么要存放到线程池、进程池中 1. 避免频繁的创建和销毁(进程、线程)来的资源开销 2. 可以限制同时存在的线程数量,以保证服务器不会因为资源不足而崩溃 3. 帮我们管理了线程的创建和销毁 4. 管理了任 阅读全文
posted @ 2019-07-05 18:01 Hello_Jack 阅读(202) 评论(0) 推荐(0) 编辑
摘要: [TOC] GIL 什么是GIL锁 为什么需要加锁 带来的问题 如何解决 关于性能的讨论 计算密集型任务:进程执行更快 线程: 进程: IO密集型:线程执行更快 线程: 进程: 自定义锁与GIL的区别 GIL锁住的是解释器级别的数据,比如对象的引用计数,垃圾分代数据等等,具体参考垃圾回收机制详解 自 阅读全文
posted @ 2019-07-05 17:53 Hello_Jack 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 信号量 它并不能解决安全问题,而是用来限制最大的并发量 阅读全文
posted @ 2019-07-05 17:50 Hello_Jack 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 递归锁 第一种情况:同一个线程一把锁加锁多次,不影响执行 第二种情况:多线程必须保证,加锁的次数和解锁的次数相同,其他线程才能够抢到这把锁 总结: 1. 同一个线程对同一把锁加锁多次,不影响执行 2. 同一个线程必须保证,加锁的次数和解锁的次数相同,其他线程才能够抢到这把锁 阅读全文
posted @ 2019-07-05 17:40 Hello_Jack 阅读(2324) 评论(0) 推荐(1) 编辑
摘要: 死锁 死锁指的是某个资源占用后,一直得不到释放,导致其他需要这个资源的线程进入阻塞状态 产生死锁的情况: 对同一把互斥锁加锁的多次(对同一个) 死锁的另外一种情况: 结果: 阅读全文
posted @ 2019-07-05 17:38 Hello_Jack 阅读(474) 评论(0) 推荐(0) 编辑
# 页脚html代码 /*头部导航栏*/ #navigator { font-size:15px; border-bottom: 1px solid #ededed; border-top: 1px solid #ededed; height: 60px;/*导航栏高度,原始50*/ clear: both; margin-top: 25px; } /*导航栏设置,可以自定义导航栏的目录*/ #navList { min-height: 35px; float: left; } #navList li { /*每一个栏目节点*/ float: left; margin: 0 5px 0 0; /*这里原来是0 40px 0 0 */ } #navList a { /*栏目文字的格式*/ display: block; width: 5em; height: 22px; float: left; text-align: center; padding-top: 19px; }