多线程使用分析

多线程分析

怎么使用多线程?咱们必须先从什么状况下能用多线程,什么状况下不能用多线程提及。多线程

多线程不能作什么

常见的多线程模型,对于每一个处理任务创建一个线程去处理,即Request Per Thread
这个传统的多线程模型能够针对3个场景出现的问题:
1. 对于每一个链接创建一个线程
这个模型,创建的线程数即链接数会受到操做系统的进程空间限制,建立的链接个数也会有限制。
2. 对于计算密集型,每一个计算创建一个线程
线程若是超过了CPU同时并行运行的数量时,线程之间的上下文切换的开销将会加大,吞吐量则会降低。
3. 若是对于IO密集型,则彻底没有必要用多线程,使用多线程只会使线程同时阻塞在IO上并发

多线程的合理场景

多线程适合既有CPU操做,又有IO操做的场景异步

对于线程能够分为三类:高并发

  1. IO线程,专门负责处理IO的操做线程能够容许IO阻塞的读写操做
  2. 计算线程,只处理CPU和内存之间的计算任务,不作任何与IO相关的阻塞操做
  3. 控制线程,使用epoll原语处理IO事件,协调IO线程和计算线程之间的同步和异步操做

常规的模型:使用专用处理用户请求的IO线程去处理高并发的用户请求,把请求经过队列的形式进行保存,用适合CPU并行数量的线程池从队列里获取请求去执行,最后若是须要进行本地IO读写,则须要使用单独的IO线程去读写本地文件。操作系统

相关文章
相关标签/搜索