Saltar al contenido principal

Modelo de subprocesos

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

precaución

Este documento hace referencia a la Nueva Arquitectura, que se está implementando activamente.

El renderizador de React Native distribuye el trabajo de la canalización de renderizado entre múltiples subprocesos.

Aquí definimos el modelo de subprocesos y proporcionamos ejemplos para ilustrar su uso en la canalización de renderizado.

El renderizador de React Native está diseñado para ser seguro en entornos multihilo. A alto nivel, esta seguridad se garantiza mediante estructuras de datos inmutables en el núcleo del framework (aplicado mediante la característica de "const correctness" de C++). Esto significa que cada actualización en React crea o clona nuevos objetos en el renderizador en lugar de modificar estructuras existentes. Esto permite al framework exponer APIs seguras para multihilo y síncronas a React.

El renderizador utiliza dos subprocesos diferentes:

  • Subproceso de UI (llamado principal): Único subproceso que puede manipular vistas host.

  • Subproceso de JavaScript: Aquí se ejecuta la fase de renderizado de React y también el cálculo de diseño.

Revisemos los escenarios de ejecución soportados para cada fase:

Threading model symbols

Escenarios de renderizado

Renderizado en subproceso JS

Escenario más común donde la mayor parte de la canalización de renderizado ocurre en el subproceso JavaScript.

Threading model use case one

Renderizado en subproceso UI

Cuando ocurre un evento de alta prioridad en el subproceso UI, el renderizador puede ejecutar toda la canalización de forma síncrona en este subproceso.

Threading model use case two

Interrupción por evento continuo o por defecto

Este escenario muestra la interrupción de la fase de renderizado por un evento de baja prioridad en el subproceso UI. React y el renderizador de React Native pueden interrumpir la fase de renderizado y fusionar su estado con el evento de baja prioridad ejecutado en el subproceso UI. En este caso, el proceso de renderizado continúa en el subproceso JS.

Threading model use case three

Interrupción por evento discreto

La fase de renderizado es interrumpible. Este escenario muestra su interrupción por un evento de alta prioridad en el subproceso UI. React y el renderizador pueden interrumpir el renderizado y fusionar su estado con el evento de alta prioridad ejecutado en el subproceso UI. La fase de renderizado se ejecuta síncronamente en el subproceso UI.

Threading model use case four

Actualización de estado en C++

Actualización originada en el subproceso UI que omite la fase de renderizado. Consulta Actualizaciones de estado del renderizador de React Native para más detalles.

Threading model use case six