La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Diseño de curso de guerra de aviones Java?

¿Diseño de curso de guerra de aviones Java?

Hola, necesitas aprender algunos contenidos en la batalla aérea de la programación Java, que pueden ejercitar tu resiliencia y tus habilidades de pensamiento lógico. Estoy involucrado en el desarrollo de software. Los estudiantes de secundaria todavía pueden programar software. Los jóvenes tienen mentes activas y aprenden más rápido. Los ingenieros de software tienen empleados antiguos que renuncian a sus lugares de origen cada año, y también hay sangre nueva que ingresa a la industria. Nunca es tarde para aprender. Hoy en día, el desarrollo de Internet está promoviendo rápidamente el desarrollo de la sociedad, por lo que el empleo sigue siendo muy bueno. Si quieres aprender java, aquí tienes algunas sugerencias, espero que te puedan ayudar.

1. El mecanismo longjmp de C se utiliza internamente para abandonar una rutina. Por lo tanto, si una función C foo llama a una función API y la función API cede (llama directa o indirectamente a la función de rendimiento). Dado que longjmp eliminará el marco de la pila C, Lua no puede volver a foo.

2. Para evitar este tipo de problemas, además de aquellas API que arrojan errores al llamar a rendimiento en llamadas API, también se proporcionan tres funciones: lua_yieldk, lua_callk y lua_pcallk. Pueden continuar ejecutándose desde la función de continuación pasada (argumento denominado k) cuando se produce el rendimiento.

3. Necesitamos presuponer algunos términos para explicar el punto de continuación. ?Para las funciones C llamadas desde Lua, las llamamos funciones primitivas. Las tres funciones de la API de C descritas anteriormente y llamadas desde esta función original se denominan funciones. La función llamada puede hacer que el hilo actual ceda. (El rendimiento ocurre cuando la función llamada es lua_yieldk, o la función pasada en las llamadas lua_callk o lua_pcallk produce rendimiento).

4. Supongamos que el hilo en ejecución cede al ejecutar la función llamada. ?Cuando este hilo continúa nuevamente, espera continuar la ejecución de la función llamada. Sin embargo, la función llamada no puede volver a la función original. Esto se debe a que la operación de rendimiento anterior destruyó el marco de la pila C. En cambio, Lua llama a la función de continuación proporcionada como argumento del destinatario. Como sugiere el nombre, una función de continuación continúa las tareas de la función original.

5. Tenga en cuenta la llamada extra explícita a la función de continuación aquí: Lua solo hará esto cuando sea necesario, lo que puede deberse a un error o porque se produjo un rendimiento y necesita continuar ejecutándose. función. Si no se produce ningún rendimiento y la función llamada regresa normalmente, entonces lua_pcallk (y lua_callk) también regresarán normalmente. (Por supuesto, en este ejemplo, tampoco puede llamar a la función de continuación más tarde, sino escribir el trabajo que debe realizarse directamente después de llamar a la función original).

Lua tratará la continuación. funcionar como la función original. La función de continuación recibirá la misma pila de Lua que la función original, y el estado de Lua que recibe también es consistente con el estado que debería tener la función llamada después de regresar. (Por ejemplo, después de una llamada a lua_callk, las funciones y los parámetros de llamada previamente insertados en la pila se reemplazan por los valores de retorno generados por la llamada). El mismo valor superior también está presente en este momento. Cuando regrese, Lua lo tratará como el retorno de la función original para su operación.

7. Necesitamos presuponer algunos términos para explicar el punto de continuación. ?Para las funciones C llamadas desde Lua, las llamamos funciones primitivas. Las tres funciones de la API de C descritas anteriormente y llamadas desde esta función original se denominan funciones. La función llamada puede hacer que el hilo actual ceda. (El rendimiento ocurre cuando la función llamada es lua_yieldk, o la función pasada en lua_callk o lua_pcallk rinde).

8. ?Cuando este hilo continúa nuevamente, espera continuar la ejecución de la función llamada. Sin embargo, la función llamada no puede volver a la función original. Esto se debe a que la operación de rendimiento anterior destruyó el marco de la pila C. En cambio, Lua llama a la función de continuación proporcionada como argumento del destinatario. Como sugiere el nombre, una función de continuación continúa las tareas de la función original.

Espero que esto ayude, ¡gracias!