我正在尝试理解多线程的概念。多线程的支持来自于:
1)从操作系统?(或)
2)语言本身?(如果我是正确的,就像Java )
CPU的作用是什么,多线程能力是否也归功于CPU (不考虑多核处理器)?
有没有可能出现这样的情况:操作系统或CPU不支持多线程,但语言本身仍然可以支持多线程?
有人能帮我理解这个吗?
发布于 2017-09-06 00:45:30
线程是可由调度器独立于其它此类序列来管理的指令序列。
通常,调度程序是操作系统的一部分(例如,Linux's Completely Fair Scheduler)。
在某些方法中(例如,green threads、stackless Python),调度器是语言或运行时环境的一部分。
在现代计算环境中,线程的数量通常会超过CPU核心的数量。这通常是通过时间切片来处理的,当线程轮流在可用的硬件上运行时。这是调度器的工作来管理它。
发布于 2017-09-06 00:49:24
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编写的)。上面的链接也说明了这一点。
执行自己的线程的语言可能没有操作系统级别的线程那么有效,因此操作系统线程是首选的,而且通常是存在的。
https://stackoverflow.com/questions/46059702
复制相似问题