Entrada de consola sin bloqueo en C
En C moderno, la entrada de consola sin bloqueo permite un manejo fluido de los comandos del usuario mientras se ejecuta el programa continúa ejecutándose y generando información. Esta capacidad suele ser fundamental en aplicaciones y juegos interactivos.
Solución C 11:
Una forma eficaz de implementar la entrada de consola sin bloqueo es mediante el uso de un hilo. Este enfoque permite que el programa principal continúe ejecutándose mientras un subproceso en segundo plano monitorea la consola en busca de entradas. El siguiente ejemplo de código demuestra este enfoque usando C 11:
#include
#include
#include
#include
static std::string getAnswer()
{
std::string answer;
std::cin >> answer;
return answer;
}
int main()
{
std::chrono::seconds timeout(5);
std::cout future = std::async(getAnswer);
if (future.wait_for(timeout) == std::future_status::ready)
answer = future.get();
std::cout Explicación:
En este ejemplo, la función getAnswer es responsable de recuperar la entrada del usuario. La función std::async lanza un hilo separado que ejecuta getAnswer y devuelve un objeto std::future que puede usarse para recuperar el resultado.
El programa principal establece un tiempo de espera de 5 segundos para esperar la entrada del usuario . Si el usuario ingresa una entrada dentro de este tiempo, el programa establece la variable de respuesta a la entrada. De lo contrario, el valor predeterminado es "tal vez".
Este enfoque de entrada sin bloqueo permite que el programa continúe con sus cálculos y resultados en curso mientras sigue respondiendo a la entrada del usuario de manera eficiente. Es una técnica poderosa para crear aplicaciones C interactivas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3