El misterioso mensajero fue al imperio de Java para predicar la asociación, ¡pero fue bombardeado!

Autor | El viento de Xuanyuan O

Fuente | Universo de tecnología de programación (ID: xuanyuancoding)

Imagen de la cabeza | Descarga de CSDN de Oriental IC

Mensajero misterioso

"Se ha escuchado durante mucho tiempo que el lenguaje Java abarca plataformas y tiene muchos marcos, pero en 20 años de trabajo, ha sido promovido al lenguaje de programación número uno del mundo. Viéndolo hoy, ¡realmente merece su reputación!"

"Señor Mensajero, ha aprobado el premio. Vámonos rápido. Su Majestad el Rey ha estado esperando durante mucho tiempo".

Hoy, un visitante misterioso saludó al Imperio de Java.

Cuando llegó al salón principal, vi al rey sentado angustiado, cerrando los ojos para descansar su mente y sin enojarse.

"¿Quién está aquí?", Preguntó el sirviente junto al rey.

"Soy el mensajero del Imperio GoLang- Goroutine " , respondió el mensajero.

"¿Imperio GoLang? ¿Dónde está un país pequeño? La viuda nunca oyó hablar de él", dijo el rey con los ojos cerrados.

Después de eso, todos los funcionarios se rieron.

"¿Por qué has venido aquí?", Continuó preguntando el camarero.

El mensajero respondió: "Estoy aquí para predicar".

Después de hablar, el rey abrió los ojos, "¿Predicando? Mi imperio Java es el imperio de programación número uno del mundo. Solo nosotros corremos la voz, ¿cómo podemos aprender de los demás?"

El mensajero no fue ni autoritario ni autoritario, diciendo: "Aunque el imperio de Java está en medio del cielo, tiene un defecto. Con el tiempo, se convertirá en un gran desastre".

"Oh, solo habla de ello. Si no entiendes tus palabras, saldrás disparado del salón inmediatamente", gritó el rey.

"Atrévete a preguntarle a Su Majestad, ¿qué debe hacer el hilo de Java cuando llegue a la función de bloqueo?", Preguntó el mensajero.

Al ver esto, el ministro de subprocesos a un lado dio un paso adelante y dijo: "Si está bloqueado, naturalmente será suspendido por el sistema operativo y cambiará a otro subproceso".

"Atrévete a preguntar a los adultos, ¿cuesta el cambio de hilo? Si un gran número de hilos se cambia con frecuencia, ¿cuál es el costo?", Preguntó el mensajero.

"Si está preocupado por este problema, entonces no necesita bloquear la función y hacerlo mediante devoluciones de llamada asincrónicas", respondió el Ministro de Threads.

La comisura de la boca del mensajero se levantó y sonrió levemente: "¡Qué devolución de llamada asincrónica! No es necesario bloquear la devolución de llamada asincrónica, pero tiene dos pecados. Uno es: la lógica de negocios del código original está rota, y el otro es que es difícil de mantener en el infierno de la devolución de llamada".

"Ni esto, ni aquello, eres realmente difícil de servir", estaba un poco ansioso el Ministro de Hilos.

El mensajero se volvió hacia el rey y dijo: "Su Majestad, tengo una manera de permitir que los subprocesos continúen ejecutándose sin tener que cambiar de subproceso después de encontrar una función de bloqueo y sin devoluciones de llamada asincrónicas. Esta es una habilidad de desarrollo de alta concurrencia".

Cuando el rey escuchó esto, se interesó: "Oh, ¿existe tal cosa? Ven y escucha".

El mensajero hizo una reverencia y dijo: "El hilo puede guardar el contexto de ejecución después de encontrar el lugar bloqueado, y luego ejecutar el código en otro lugar. Una vez que se completa la solicitud bloqueada, puede volver para continuar con la ejecución".

El rey estaba desconcertado y preguntó: "¿Qué significa cambiar para ejecutar código en otro lugar? ¿Qué significa retroceder y continuar con la ejecución? ¿Se puede ejecutar esta función a la mitad y luego salir y volver?"

"¡Sí, es cierto!", Respondió el mensajero.

Tan pronto como salieron las palabras, hubo mucha discusión en la corte, y todos los funcionarios mostraron sonrisas desdeñosas.

"¡Es ridículo! La ejecución de la función siempre se realiza de una sola vez desde la entrada hasta el regreso y la salida. ¿Cómo puede haber una salida a mitad de camino y luego volver a ejecutarse? ¡Es inaudito!", Dijo el ministro de hilo al costado.

El mensajero continuó: "¿Se hace de una vez? Me temo que no. En medio de la función de ejecución de subprocesos, cuando el intervalo de tiempo se agota o se encuentra con un bloqueo de E / S, el sistema operativo se bloquea después de guardar el contexto y cambiar a otros subprocesos. Luego, espere hasta que se presente la oportunidad Regrese y continúe la ejecución, ¿verdad? "

El ministro de subprocesos regañó airadamente: "¡La palabra fuerte no es razonable! Lo que dijo es que el sistema operativo está programando y administrando múltiples subprocesos, que son transparentes para los subprocesos de nuestra capa de aplicación, por lo que no necesita preocuparse".

El mensajero no se rindió, pero preguntó: " Dado que el sistema operativo puede programar y administrar múltiples subprocesos, ¿por qué los subprocesos no pueden programar la ejecución de funciones de administración? "

Los ministros susurraron de nuevo y empezaron a hablar.

“Su Majestad, estos enviados estatales han engañado a la multitud, ¡y Weichen sugirió que deberían ser expulsados ​​del salón inmediatamente, para que puedan mirar y escuchar!

El rey estuvo de acuerdo e inmediatamente envió gente hacia adelante.

Sin esperar a que los guardias dieran un paso adelante, el mensajero se fue solo y dijo mientras caminaba: "¡Suspiro! El digno imperio de Java no puede acomodar una nueva tecnología".

Encuentro de despedida

El mensajero se desanimó y planeó abandonar el imperio de Java, pero se detuvo a la mitad.

"Señor, por favor quédese, mi anfitrión invita a su esposo a encontrarse en su casa"

Cuando el mensajero llegó a la mansión, resultó que el dueño era un rico hacendado local.

“Mi esposo se encuentra hoy en el juzgado, he escuchado que estoy muy interesada en la tecnología de interrupción y recuperación durante la ejecución de la función mencionada por mi esposo, y me gustaría pedirle consejo a mi esposo”. El presentador terminó de despedirse.

"No me atrevo a enseñarme. Vine al imperio de Java esta vez. La forma en que predico se llama Xiecheng. Es un truco de alto desarrollo concurrente. Pero el monarca y los ministros de su país son ignorantes y regresan sin éxito. Qué lástima, qué lástima ! ", suspiró el mensajero.

"¿Coroutine? ¿Qué es esto? Solo he oído hablar de procesos e hilos, pero nunca he oído hablar de coroutines".

El mensajero se levantó y dijo: "Un subproceso es un flujo de ejecución abstraído por el sistema operativo, que el sistema operativo programa y administra de manera uniforme. En un subproceso, también se pueden abstraer varios flujos de ejecución, y el subproceso se usa para la programación y administración unificadas. La abstracción sobre este subproceso El flujo de ejecución es una corrutina "

El propietario estaba un poco desconcertado y preguntó: "¿Cómo puede un hilo tener múltiples flujos de ejecución?"

"Esto es lo que dije hoy en la corte. Después de que la función de ejecución de subprocesos encuentra un bloqueo, puede guardar el contexto y salir, y luego ejecutar el código en otro lugar. Aquí es de un flujo de ejecución a otro flujo de ejecución", explicó el mensajero. .

El anfitrión tomó el caso y comenzó, "Resultó ser esto, ¡maravilloso, maravilloso! Sin embargo, este hilo es la gestión de programación del sistema operativo, el flujo de ejecución extraído del hilo, es decir, la corrutina, ¿cómo programar la gestión? El sistema puede privar a los subprocesos de los derechos de ejecución a través de interrupciones del reloj y llamadas del sistema para ingresar al kernel. ¿Cómo pueden los subprocesos privar los derechos de ejecución de las corrutinas para lograr la administración de la programación?

"¡Realmente una buena pregunta! La programación de subprocesos es administrada por el sistema operativo, que es programación preventiva. A diferencia de las corrutinas, las corrutinas deben cooperar entre sí y entregar activamente los derechos de ejecución. Este es también el nombre de las corrutinas , el origen de los programas colaborativos . "

"¿Entregar de forma proactiva el derecho de ejecución? ¿Cómo hacerlo?", Preguntó el propietario.

"Hay muchas formas. Por ejemplo, el imperio C ++ tiene un marco de rutina llamado libco, que implementa la intervención del programador a través de las funciones clave del sistema HOOK".

"Entonces, ¿cómo estás Golang? ¿Es lo mismo?"

"Nuestro imperio Golang es diferente. Nuestro diseño innato es admitir corrutinas. Las llamadas al sistema están encapsuladas por nosotros. Las aplicaciones que deben bloquearse al llamar, como lectura y escritura de archivos, lectura / escritura, suspensión y nuestro programador puede Tengo la oportunidad de intervenir para realizar la gestión de la programación ”, dijo con orgullo el mensajero.

El anfitrión pensó por un momento y preguntó: "Entonces, ¿cómo implementamos Java? Por favor, infórmeme, Sr."

"Su lenguaje Java se ejecuta a través de la JVM, y la ejecución del bytecode está bajo el control de la JVM. ¿No es fácil interrumpir y reanudar el flujo de ejecución del código de la aplicación?", Dijo el mensajero.

El maestro asintió pensativo.

Nuevo viaje

El anfitrión y el mensajero hablaron muy alegremente y casi anochecía sin saberlo.

El anfitrión se puso de pie y dijo: "La iluminación del Sr. Jinmeng, consolaré mi vida. Por favor, quédese en la casa por más tiempo, lo preguntaré con cuidado".

El mensajero agitó la mano una y otra vez y dijo: "Tengo algo que hacer y me iré mañana".

"¿No sé adónde quiere ir el marido?"

"Escuché que C ++ Empire lanzará una nueva versión nuevamente, planeo ir a predicar"

El propietario estaba desconcertado: "¿No hay libco en el imperio C ++?"

"Después de todo, Libco no es cosa de la corte. Voy ahora, con la esperanza de incluir la corrutina en el nuevo estándar oficial".

A primera hora de la mañana del día siguiente, el mensajero se despidió de su amo y se fue.

Pronto, llegó la noticia de la corte del Imperio de Java de que algunas personas lanzaron un marco de rutina , Quasar , y el gobierno y la oposición temblaron por un tiempo.

更多精彩推荐
☞什么才是真正的程序员?
☞求伯君领衔 5 代技术人对话,00 后浪来袭 1024 程序员节
☞国行 iPhone 12/Pro/Max双卡模式支持5G网络;支付宝推出「晚点付」功能;MySQL 8.0.22 GA|极客头条
☞强化学习是针对优化数据的监督学习?
☞对话阿里云:开源与自研如何共处?
☞10 月中旬的 Medalla 测试网失常:如何开始,将如何结束?
点分享点点赞点在看

Supongo que te gusta

Origin blog.csdn.net/csdnsevenn/article/details/109192368
Recomendado
Clasificación