多线程学习---简单了解下

简单了解下多任务相关

 

多任务

     不管是单核还是多核CPU,一单任务数量超过核数,OS都会把每个任务轮流调度到每个核心上,OS实现多线程和多进程往往都是通过时间片的形式执行的,即:每个任务(进程/线程)轮流执行,因为时间片切分的很小,以至于我们感觉多个任务在同时执行。

      实现多任务方式:多进程模式,多线程模式,多进程+多线程模式

  进程是资源分配的最小单位,线程是CPU调度的最小单位,每个进程至少含有一个线程,如何调度进程和线程,完全由操作系统决定,程序不能自己决定什么时候执行,执行多久时间

 

多线程

  一个进程内可以有多个线程(至少一个线程),多个线程共享进程的所有变量,同时对全局变量进行访问和改写容易出现混乱,所以需要用锁进行线程的同步控制。

     多线程的目的:最大限度的利用CPU资源。

     处理器的个数决定了同一时刻同时运行的最大线程数,如单核CPU某一时刻只能有一个线程在执行(微观串行),双核的CPU可以最多同时运行两个线程,可以做到微观并行。

 

多进程:

  一个进程内有一个默认线程,开多个进程处理不同的任务,每个进程有自己独立的内存空间,不共享对象,同步简单,但是开销较大。

 

简单对比下:

 

 

对比维度 多进程 多线程 总结
数据共享,同步

数据共享复杂,需要IPC(进程间通信)

数据是隔离的,同步简单

共享进程数据,共享简单

同步复杂

各有优劣势,

视应用场景而定

内存,CPU

占用内存多,切换复杂,

CPU利用率低

占用内存少,切换简单,

CPU利用率高

线程占优
创建销毁,切换 创建销毁,切换复杂,速度慢 创建销毁,切换简单,速度快 线程占优
编程调试 编程简单,调试简单 编程复杂,调试复杂 进程占优
可靠性 进程间不会互相影响 一个线程挂掉,会导致整个进程挂掉 进程占优
分布式

是应于多核,多机分布式,

一台机器不够,扩展较简单

适应于多核分布式 进程占优
posted @ 2017-05-23 09:50  jiguojing  阅读(358)  评论(0编辑  收藏  举报