码迷,mamicode.com
首页 > 编程语言 > 详细

线程的实现方式

时间:2018-03-24 16:31:42      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:自己   class   阻塞   调度   AC   说明   ack   页面   i/o   

  线程的实现也就是用户线程和内核线程的区别

1、在用户空间中实现线程

  • 特点:内核对线程包一无所知。从内核角度考虑,就是按正常的方式管理,即单线程进程(存在运行时系统)
  • 优点: 用户级线程包可以在不支持线程的操作系统上实现。

             保存线程状态的过程和调用程序都只是本地过程,故启动它们比进程内核调用效率更高。

                  不需要陷阱,不需要上下文切换,也不需要对内存高速缓存进行刷新,使得线程调用非常快捷。

  • 缺点:线程发生I/O或页面故障引起的阻塞时,如果调用阻塞系统调用则内核由于不知道有多线程的存在,而会阻塞整个进程从而阻塞所有线程。

      一个单独的进程内部,没有时钟中断,所以不可能用轮转调度的方式调度线程。

2、在内核中实现线程

  • 特点:当某个线程希望创建一个新线程或撤销一个已有线程时,它进行一个系统调用
  • 优点:所有能够阻塞线程的调用都以系统调用的形式实现,代价可观。

     当一个线程阻塞时,内核根据选择可以运行另一个进程的线程,而用户空间实现的线程中,运行时系统始终运行自己进程中的线程。

说明:由于内核创建线程代价大,故有线程回收

 

线程的实现方式

标签:自己   class   阻塞   调度   AC   说明   ack   页面   i/o   

原文地址:https://www.cnblogs.com/zsk-1996/p/8638261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!