1、【线程】与【进程】的区别:多个线程可以为同一个进程服务,它们共享内存空间,一个【进程】可以只有一个【线程】,或者多个【线程】
2、创建【线程】只需要复制【栈】与【寄存器】的内容,比fork一个新进程来的更快,更轻量级
3、线程共享以下内容:【代码段】【全局变量】【文件标识符】【工作环境】【目录】【用户权限】
4、多线程模型:指的实际上是 【由多少个线程占用一个处理器】
5、【用户线程】:多个线程共用一个处理器,由线程库调度这些线程分时占用处理器,此时的线程称为用户线程
6、【内核线程】:新建一个线程,就把此线程放到新的处理器上单独运行,此时此线程称为内核线程
7、【一对一模型】:新建一个线程就把新的线程放到新的处理器上去
8、【多对一模型】:多个线程共用一个处理器
9、【多对多模型】:好比5个线程共用3个处理器,提供一个调度机制让线程能分配处理器
10、【混合模型】:有一个线程必须要用一个单独的特定的处理器处理,其余的几个线程则共用处理器
11、线程库:为程序员创建的,用于管理线程的API
12、【exec()】语义:用参数指定的程序替换整个进程
13、线程取消分两种:【异步取消】,【延迟取消】
14、信号处理:【外部信号】【内部信号】
15、【线程池】:开始时就创建一定数量的线程,比使用时等待创建新线程更快
16、【轻量级进程】:
如果银行职员是处理器,银行有2个职员,提供3个柜台的服务,
银行提供调度算法调度两个职员如何处理3个柜台的服务,
外部有10个人等待办业务,
大厅经理提供调度将10个人调度到这3个柜台上办业务,一个人办一分钟
在这个例子当中,2个职员就是两个处理器
银行是操作系统
3个柜台就是处理器向外提供的3个轻量级进程
外面10个人是10个线程,大厅经理是线程库
这是示意图