• 概念
    多线程(threading)和多进程(multiprocessing)
    进程是指一个内存中运行的应用程序,比如在Windows系统中,一个运行的exe就是一个进程。
    线程是指进程中的一个执行流程。
    联系与区别:
  1. 一个程序至少有一个进程,而一个进程至少有一个线程。一个应用程序可以同时启动多个进程。而线程则是指进程中的一个执行流程,一个进程可以有多个线程,每个线程分别执行不同的任务,当进程内的多个线程同时运行时,这种运行方式就被称为并发运行

多线程并发
伪并发是指单核处理器的并发;
真并发是指多核处理器的并发。
多线程并发只是表面和感觉上的并发,并不是实质上的并发, 单CPU的,一次最多只能有一个线程获取CPU并运行,但是它在多个线程之间频繁切换,当切换的频率高到一定程度时,我们就感觉所有的线程在同时运行,于是感觉这多个线程是并发的。
多线程的实质是“最大限度地利用CPU资源,当某一个线程的处理不需要占用CPU而只需要和I/O等资源打交道时,让其他线程有机会获得CPU资源。

  1. 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。


  2. 并行: 在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特种;在多处理器系统中,进程不仅可以交替执行,而且可以重叠执行在多处理器上的程序才可实现并行处理。并行是针对多处理器而言的。并行是同时发生的多个并发事件,具有并发的含义,但并发不一定并行,也是说并发事件之间不一定要同一时刻发生
  3. 多线程 : 进程中并发运行的一段代码, 多线程可以实现线程间的切换执行。

**

异步与同步:

  • 同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。
  • 异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。
  • 多线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。

并发和并行都可以是很多个线程,就看这些线程能不能同时被(多个)CPU执行,可以说明是并行,并发是多个线程被一个CPU轮流切换着执行

高并发的相关指标
高并发相关指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等

响应时间:系统对某个请求做出相应的时间.例如处理一个HTTP请求,从HTTP发出到收到响应需要200ms,则200ms就是系统的响应时间.

吞吐量:单位时间内处理的请求数量

QPS:每秒响应请求数,这个感觉和吞吐量区分不大

并发用户数:同时承载正常使用系统功能的用户数量. 例如微信,同时可以x亿人在线,一定程度代表了系统的并发用户数

提高并发能力
有以下途径:

增加机器:读写分离,分布式部署(不同模块),集群(相同服务)
增强单机性能:数据库优化,优化代码(如算法),硬件升级(CPU,内存,SSD等)