谁创建线程?程序员,操作系统,编译器还是编程语言?

时间:2018-10-08 22:44:08

标签: windows multithreading

谁是线程的第一个也是主要的创建者? 如果一种编程语言不支持线程,我们可以在其上进行多重踩踏吗? 如果操作系统不支持线程,我们可以在其上运行多线程吗?

2 个答案:

答案 0 :(得分:0)

  

谁是线程的第一个也是主要的创建者?

操作系统

  

如果一种编程语言不支持线程,我们可以在其上进行多重踩踏吗?

这取决于。如果该编程语言支持任何本机绑定(例如JNI / PINVOKE / Node.js插件),则可以在该本机级别创建线程,并将您的编程语言代码编组到本机线程中。

这可能是一个不完整的解决方案,因为线程化还涉及内存障碍,内存排序,事前发生,共享数据等,因此您需要自己处理所有这些问题。

  

如果操作系统不支持线程,我们可以在其上运行多线程吗?

如果您的操作系统不支持多线程,那么没有什么可以真正填补这一空白。您可以通过让编译器在代码中插入安全点来模仿多线程,并且每次程序到达安全点时,应用程序调度程序可能会停止当前代码执行并将执行切换到另一个伪线程。简而言之,我们将这种解决方案称为“纤维”或“绿色线”。

有趣的是,这就是Java早期版本所做的,希望他们可以通过编写自己的更好的调度程序来击败OS调度程序,然后再了解它们并不是Windows / Linux内核开发团队的更好。

答案 1 :(得分:-2)

我自己找到了答案

  

主线程制造者始终是程序员。

Operation System仅为自己的functoins创建自己的线程。

编程语言必须支持线程,但是如果操作系统不支持多线程,程序员仍然可以使用线程