"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso implementar entrada de console sem bloqueio em C++ para aplicativos interativos?

Como posso implementar entrada de console sem bloqueio em C++ para aplicativos interativos?

Publicado em 2024-11-08
Navegar:355

How can I implement non-blocking console input in C   for interactive applications?

Entrada de console sem bloqueio em C

No C moderno, a entrada de console sem bloqueio permite o manuseio contínuo dos comandos do usuário enquanto o programa continua a executar e gerar informações. Esse recurso geralmente é crítico em aplicativos e jogos interativos.

Solução C 11:

Uma maneira eficaz de implementar entrada de console sem bloqueio é através do uso de um console separado fio. Essa abordagem permite que o programa principal continue em execução enquanto um thread em segundo plano monitora a entrada do console. O exemplo de código a seguir demonstra essa abordagem 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 

Explicação:

Neste exemplo, a função getAnswer é responsável por recuperar a entrada do usuário. A função std::async inicia um thread separado que executa getAnswer e retorna um objeto std::future que pode ser usado para recuperar o resultado.

O programa principal define um tempo limite de 5 segundos para aguardar a entrada do usuário . Se o usuário inserir uma entrada dentro desse período, o programa definirá a variável de resposta para a entrada. Caso contrário, o padrão é "talvez".

Essa abordagem de entrada sem bloqueio permite que o programa continue seus cálculos e resultados contínuos enquanto ainda responde à entrada do usuário de forma eficiente. É uma técnica poderosa para construir aplicativos C interativos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3