进程是一个执行中的程序。每一个进程都拥有本身的地址空间、内存、数据栈以及其它用于跟踪执行的辅助数据。微信
一个程序运行就是一个进程(好比 QQ、微信或者其它软件);多线程
进程能够经过派生新的进程来执行其它任务(好比在同一个电脑上登陆两个 QQ);并发
每一个进程都有本身独立的数据,只能经过进程间通讯(IPC)的方式共享信息。函数
线程(有时候称为轻量级进程)与进程相似,不过它们是在同一个进程下执行的,并共享相同的上下文。能够将他们认为是在一个主进程或者“主线程”中并行运行的一些“迷你进程”。spa
线程包括开始、执行顺序和结束三部分;线程
当其它线程运行时,它能够被抢占(中断)和临时挂起(也称为睡眠)——这种作法叫作让步;进程
一个进程中的各个线程与主线程共享同一片数据空间;内存
线程通常是以并发方式执行的;(在单核 CPU 系统中不是真正的并发,是每一个线程运行一小会儿再让出给其它线程运行,连续快速的切换,因此看起来像是并发);同步
若是两个或多个线程访问同一片数据,因为访问顺序不一致可能致使结果不一致。——这种状况称为「竞态条件」(大多数线程库有一些同步原语注释,容许线程管理器控制执行和访问)it
线程没法给予公平的执行时间。一些函数会在完成前保持阻塞状态,若是没有专门为多线程状况进行修改,会致使 CPU 的时间分配向这些贪婪的函数倾斜。