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的多线程实现,待完善。