我正在尝试理解多线程概念。多线程的支持来自:
1)来自操作系统? (OR)
2)语言本身? (如果我是正确的,就像Java一样)
CPU的作用是什么,多线程功能是否也归功于CPU(不考虑多核处理器)?
是否存在操作系统或CPU不支持多线程但仍然可以使用语言本身的情况?
任何人都可以帮我理解这个吗?
答案 0 :(得分:1)
线程是一系列指令,可以通过调度程序独立于其他此类序列进行管理。
通常,调度程序是操作系统的一部分(例如,Linux's Completely Fair Scheduler)。
在某些方法中(例如,green threads,stackless Python),调度程序是语言或运行时环境的一部分。
在现代计算环境中,通常情况是线程数超过CPU核心数。当线程轮流在可用硬件上运行时,通常通过时间切片来处理。调度程序的工作就是管理它。
答案 1 :(得分:1)
Understanding java's native threads and the jvm有一些信息。
基本上,多线程支持来自Java的操作系统和Java。例如,Python不会发生这种情况(标准的CPython只是围绕Linux线程的包装)。
https://superuser.com/questions/740611/what-is-the-difference-between-multithreading-and-hyperthreading详细说明了CPU为多线程所做的工作。
理论上,是的,语言可以是线程的实现者。根据你的看法,C并不依赖于操作系统,它是自己的线程(主要是因为操作系统是用C语言编写的)。以上链接也说明了这一点。
执行自己的线程的语言可能没有OS级别的线程那么高效,因此OS-threading是首选且通常存在。