zoukankan      html  css  js  c++  java
  • Linux 线程实现模型

    1、Linux 线程的调度实现可以有两种模型,

         一种是完全由进程负责,进程内启动一个线程调度器,由进程内的线程调度器完成调度。

            缺点是:(1)各个线程自己加主动释放cpu的流程

                           (2)进程可能阻塞,达不到多线程时让进程多头并进的效果。因为当一个线程调用了阻塞性的系统调用,则会导致整个进程挂住,因为进程内的线程调度器得不到运行机会,所以,根本没法调度其他线程进行运行。

         另外一种是由内核完成调度。

      缺点是:(1)内核完成调度,内核负担大。

    2、Linux 的线程实现,历史上出现过Linux Thread 和 现代版的NPTL。Linux Thread虽然也能实现多线程的效果,但是局限比较多,而NPTL则更加符合Posix 标准,在一个进程内启动多个线程时性能更好。极端情况下,一个进程内可以启动10万个线程,而使用传统的Linux Thread则大约启动几千个线程。从Linux 2.6开始,以及glibc 新版本中都是默认开启NPTL。

    3、NPTL=native posix thread library

    4、NPTL的线程实现模型如下:

    5、java 的多线程实现,是由JVM实现的,内核并不关心,而是由JVM完成多线程调度,JVM内部维护一个程序运行指令的个数计数器,从而知道线程的运行时间,当达到一定指令条数后,则强行剥夺线程运行,以便调度其他线程运行,java线程的优先级为10个,默认为5, 可以指定1~10.

    基本原理是:基于优先级的时间片轮转调度。

    6、python的多线程实现,待完善。

  • 相关阅读:
    【iCore、iCore2 双核心板】EPCS 实验(SPI Flash)(基于Verilog语言)
    【iCore2双核心板】SRAM 读写实验(基于Verilog语言)
    大便难案
    乌梅丸案二则
    奔豚
    中医对甲流的认识
    大青龙汤临床应用
    中风之补阳还五汤
    时方的魅力
    艾灸急治
  • 原文地址:https://www.cnblogs.com/zhouhaibing/p/7907323.html
Copyright © 2011-2022 走看看