进程是一段运行的程序 线程是进程的分支,多线程可以提高程序的运行效率,提高并发。 import os print(os.getpid()) #可以获得一个进程号 我们使用的计算机大多为单cpu计算机,单cpu计算机在一个时间点上只能处理一个任务。 GIL全局解释器锁,当一个事件运行加锁后,该事件的锁 ...
分类:
编程语言 时间:
2018-05-07 23:49:56
阅读次数:
268
一、数据库管理软件的由来 数据库的产生是为了解决数据的永久储存、数据安全、以及对方对外服务时能够实现并发服务等效果。例如解决前面所学的Scoket编程中,在不考虑硬件问题的基础上,服务端服务多个客户端时: 1)如何解决数据的安全问题,加锁处理; 2)实现并发效果。 面对以上问题,我们的解决办法是在服 ...
分类:
数据库 时间:
2018-05-07 22:57:22
阅读次数:
242
python多线程使用场景:IO操作,不适合CPU密集操作型任务 1、多个线程内存共享 2、线程同时修改同一份数据需要加锁,mutex互斥锁 3、递归锁:多把锁,锁中有锁 4、python多线程,同一时间只有颗CPU在执行。 启动线程: 1 import threading 2 def run(na ...
分类:
编程语言 时间:
2018-05-07 13:28:12
阅读次数:
108
一、并发控制 1.关键字synchronzed修饰 2.加锁: private Lock lock = new ReentrantLock(); lock.lock(); lock.unlock(); ...
分类:
编程语言 时间:
2018-05-06 16:22:20
阅读次数:
139
一 . 概述 我们知道加锁会对多线程的并发有影响,那么我们是否有无锁的方式保证线程的安全性呢?有的,就是CAS方式. CAS的核心就是乐观的尝试,将线程的阻塞变成了线程的尝试,认为即使在不断尝试的代价也比阻塞后唤醒的代价要小. 二 CAS CAS到底是什么呢? 其实就是一个JVM的指令,其中这个指令 ...
分类:
其他好文 时间:
2018-05-06 01:35:26
阅读次数:
153
减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。1. 无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。2. CAS算法。Java的Atomic包使用CAS算法 ...
分类:
其他好文 时间:
2018-05-04 12:05:19
阅读次数:
173
jdk 1.8版本 ConcurrentHashMap在1.8中的实现,相比于1.7的版本基本上全部都变掉了。首先,取消了Segment分段锁的数据结构,取而代之的是数组+链表(红黑树)的结构。而对于锁的粒度,调整为对每个数组元素加锁(Node)。 put的步骤大致如下: get()方法没有加锁操作 ...
分类:
编程语言 时间:
2018-05-02 20:59:06
阅读次数:
167
场景 C++服务器端为每一个客户端建立多线程发送,没有添加锁,会触发异常:received invalid message type 3 from client。导致服务器端主动断开跟客户端的连接打印出错的代码在TDispatchProcessor.h文件相关堆栈代码: apache::thrift::TOutput::errorTimeWrapper(const char * msg
分类:
编程语言 时间:
2018-05-02 18:04:55
阅读次数:
185
作业总结分析 多线程电梯 (1)作业设计 本次作业要求完成能捎带的3个电梯的运行;需要多线程。 这次作业每部的电梯都和之前的电梯大致相同,由请求处理后的请求队列,请求调度,电梯来完成请求,不同的是这次是3部电梯同时运行。 根据需求,将输入处理,请求分配,电梯设计为线程。 输入请求队列并处理后的是需要 ...
分类:
其他好文 时间:
2018-05-02 16:11:54
阅读次数:
143
多线程电梯 设计策略 用户发出请求加入请求队列,调度器根据电梯的状态为电梯分配请求,每个电梯有自己的执行队列,根据执行队列的请求来改变自身的状态。用户请求处理器和调度器共享请求队列,调度器和电梯本身存在对电梯状态进行同时读写,因此需要对这两个做数据保护。 一开始以为电梯是要模拟真实运行状态,对时间不 ...
分类:
其他好文 时间:
2018-05-01 15:57:42
阅读次数:
198