Кто является первым и основным создателем потоков?
Операционная система
Если язык программирования не поддерживает потоки, можем ли мы запустить на нем многопоточность?
Это зависит.Если этот язык программирования поддерживает какую-либо нативную привязку (например, дополнения JNI / PINVOKE / Node.js), вы можете создавать потоки на этом нативном уровне и перенаправлять код вашего языка программирования в нативные нити.
Это может быть неполное решение, поскольку многопоточность также включает в себя барьеры памяти, упорядочение памяти, случайные события, общие данные и т. Д., Вам придется обрабатывать все это самостоятельно.
Если операционная система не поддерживает потоки, можем ли мы запустить на ней многопоточность?
Если ваша ОС не поддерживает многопоточность, то ничто не сможет заполнить этот пробел.Вы можете имитировать многопоточность, позволяя компилятору вставлять безопасные точки в ваш код, и каждый раз, когда ваша программа достигает безопасной точки, планировщик приложения может остановить текущее выполнение кода и переключить выполнение на другой псевдо-поток.В двух словах, мы называем такое решение «Волокно» или «Зеленая нить».
Забавно, вот что делали ранние версии Java, надеясь, что они смогут побить планировщик ОС, написав свой собственный, лучший планировщик, прежде чем понять, что они не лучше команды разработчиков ядра Windows / Linux.