¿Cuáles son las desventajas de tener un solo subproceso para un lenguaje o marco? ¿Por qué Node y JavaScript todavía están diseñados para ser de un solo subproceso?

Mire la documentación de .NET Framework y cuántas veces verá la oración “cualquier miembro público estático (Compartido en Visual Basic) de este tipo es seguro para subprocesos”. Está en todas partes; casi parece ruido de fondo. Pero no se deje engañar: esto no solo sucedió por sí solo, se hizo un gran esfuerzo.

Si no permite el control manual de subprocesos y hace cosas a través de, por ejemplo, la cola de eventos, todo esto desaparece. El código que comenzó a ejecutarse siempre se ejecuta hasta su finalización, y ningún otro código se ejecuta hasta que haya terminado; si está utilizando variables globales o algo así, no es necesario protegerlos para que no cambien debajo de usted. También simplifica el diseño del tiempo de ejecución del lenguaje, porque, por ejemplo, no es posible que una parte del código continúe agregando una función mientras que otra ya intenta llamarla (que normalmente necesitaría sincronización).

Sin embargo, tenga en cuenta que el navegador, Node, los módulos C ++ para Node, no son de un solo subproceso. Esta restricción solo se aplica al código JS. Por ejemplo, hay algunas operaciones asíncronas en Node que en realidad no son asíncronas en el sistema operativo; para ellos, se usará un grupo de subprocesos para mejorar el rendimiento de su programa. Sin embargo, todo este código de subprocesos múltiples es consciente de que debe preservar la ilusión de un subproceso único al hablar con JS, y se sincronizará adecuadamente (bueno, a menudo puede dejar cosas en la cola de eventos y continuar).

El nodo es una arquitectura sin bloqueo de subproceso único.

Este es un buen artículo sobre el subproceso único y múltiple: ¿Qué son estos “modelos de subprocesamiento” y por qué me importa?

En una nota muy simple: si está utilizando un solo hilo, entonces no podrá realizar multitareas, lo cual es muy importante en el mundo de la programación actual para la correcta utilización de los recursos disponibles.

En la aplicación de un solo subproceso, nunca tendrá que molestarse por el interbloqueo, es una ventaja para el subproceso único.

Java Script: es un lenguaje de tiempo de ejecución, por lo que se creó con el contexto del mismo, cuando ejecutamos JavaScript crea su propio contexto en el navegador y no podemos crear múltiples contextos para él, ya que su tiempo de ejecución generado es por eso que JavaScript tiene un solo subproceso.