2.1_6线程的实现方式和多线程模型
线程的实现方式
用户级线程
eg:QQ进程
int main(){
int i=0;
if(i==0){"处理视频聊天的代码"};
if(i==1){"处理文字聊天的代码"};
if(i==2){"处理文件传输的代码"};
i=(i+1)%3;
}
从代码角度来看,线程其实就是一段代码逻辑。上述代码逻辑上可以看做是三个“线程”。while循环就是一个最弱智的“线程库”,线程库完成了对线程的管理工作。
- 优缺点:
- 优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小,效率高。
- 缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可在多个处理机上并行运行。
内核级线程
- 优缺点:
- 优点:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核处理机上并发执行。
- 缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统完成,需要切换到核心态,因此线程管理的成本高,开销大。