线程的实现方式

Posted zsk-1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的实现方式相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

2、在内核中实现线程

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

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

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

 

以上是关于线程的实现方式的主要内容,如果未能解决你的问题,请参考以下文章

Java 多线程实现的三种方式

多线程的实现方式

27多线程(多线程的三种实现方式Thread线程类的常见方法线程安全问题)

27多线程(多线程的三种实现方式Thread线程类的常见方法线程安全问题)

多线程两种实现方式的区别

实现线程的两种方式