线程问题

并发(Concurrency)并行(Parallelism)

并发: 宏观上看,多个任务同时执行,微观上看,每一个时刻点仍然只有一个任务在执行

并行: 无论宏观还是微观,任务的执行都是同时进行的,且互不干扰

线程问题_第1张图片

       单CPU系统中,某一时刻只能处理一个任务,因此要实现多任务同时处理(宏观),需要通过系统进行调度,即在不同的任务之间进行切换(多以时间片轮训为主),这便是并发处理方式。(类似网络分包,将任务切割成小块逐个执行)

       多CPU系统中,多个任务可以同时执行,类似平行线的关系,这便是并行处理方式。

进程线程

进程: 运行中的程序,当一个程序开始进入内存运行,便创建一个具有一定独立功能的进程。简单说,就如任务管理器中“进程” 看到的一样,每一个运行中的软件对应有各自的进程(至少一个)。

线程: 线程是进程中的一个执行单元,一个进程至少包含一个线程,也可以是多线程。

总之,一个运行中的程序至少有一个进程,而一个进程中的线程也至少一个,可以是多线程。

 程序运行原理(程序调度)

1、分时调度:所有线程轮流使用CPU资源,平均分配每个线程占用的时间。

2、抢占式调度:根据线程的优先级决定CPU的占用顺序,如果优先级相同,则随机选择一个线程先执行,我们所见的多数计算机操作系统都是抢占式调度,这样就可以优先处理我们关心的线程,而对于耗时或不怎么急切的线程,我们让其在后台慢慢处理(当CPU空闲时处理)。

注:多线程没有提高程序运行的速率,但是提高了程序运行的效率,充分利用了CPU

 

你可能感兴趣的:(编程基础)