Maison  >  Article  >  développement back-end  >  Comment les programmes C peuvent-ils implémenter une entrée de console asynchrone ?

Comment les programmes C peuvent-ils implémenter une entrée de console asynchrone ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 07:01:29485parcourir

How Can C   Programs Implement Asynchronous Console Input?

Entrée de console asynchrone pour les programmes C

Une entrée de console non bloquante est essentielle pour gérer les commandes utilisateur pendant qu'un programme s'exécute en continu. En C , il existe différentes approches pour y parvenir.

Solution C 11

Une méthode efficace utilisant C 11 consiste à utiliser le std::thread et <code class="hljs">std::futures bibliothèques. Voici un exemple :

<code class="cpp">#include <iostream>
#include <future>
#include <thread>
#include <chrono>

static std::string getAnswer()
{
    std::string answer;
    std::cin >> answer;
    return answer;
}

int main()
{
    std::chrono::seconds timeout(5);
    std::cout << "Do you even lift?" << std::endl << std::flush;
    std::string answer = "maybe"; // default to maybe
    std::future<std::string> future = std::async(getAnswer);
    if (future.wait_for(timeout) == std::future_status::ready)
        answer = future.get();

    std::cout << "the answer was: " << answer << std::endl;
    exit(0);
}</code>

Dans cet exemple, la bibliothèque std::thread est utilisée pour créer un thread séparé qui gère les entrées pendant que le thread principal poursuit son exécution. La bibliothèque <code class="hljs">std::future est utilisée pour récupérer l'entrée du thread séparé de manière asynchrone.

Cette approche permet au programme de générer des informations tout en gérant simultanément les commandes utilisateur, fournissant une interface utilisateur réactive et non bloquante. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn