多线程编程和OS,CPU的支持?

时间:2017-09-05 16:38:16

标签: java multithreading

我正在尝试理解多线程概念。多线程的支持来自:

1)来自操作系统? (OR)
2)语言本身? (如果我是正确的,就像Java一样)

CPU的作用是什么,多线程功能是否也归功于CPU(不考虑多核处理器)?

是否存在操作系统或CPU不支持多线程但仍然可以使用语言本身的情况?

任何人都可以帮我理解这个吗?

2 个答案:

答案 0 :(得分:1)

线程是一系列指令,可以通过调度程序独立于其他此类序列进行管理。

通常,调度程序是操作系统的一部分(例如,Linux's Completely Fair Scheduler)。

在某些方法中(例如,green threadsstackless 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是首选且通常存在。