Maison > développement back-end > C++ > Comment puis-je implémenter une entrée de console non bloquante en C pour les applications interactives ?

Comment puis-je implémenter une entrée de console non bloquante en C pour les applications interactives ?

Patricia Arquette
Libérer: 2024-10-30 17:39:30
original
737 Les gens l'ont consulté

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

Entrée de console non bloquante en C

En C moderne, l'entrée de console non bloquante permet une gestion transparente des commandes utilisateur pendant que le programme continue de s'exécuter et de générer des informations. Cette capacité est souvent critique dans les applications interactives et les jeux.

Solution C 11 :

Un moyen efficace de mettre en œuvre une entrée de console non bloquante consiste à utiliser un fil de discussion. Cette approche permet au programme principal de continuer à s'exécuter pendant qu'un thread d'arrière-plan surveille les entrées de la console. L'exemple de code suivant illustre cette approche en utilisant C 11 :

<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>
Copier après la connexion

Explication :

Dans cet exemple, la fonction getAnswer est chargée de récupérer l'entrée de l'utilisateur. La fonction std::async lance un thread séparé qui exécute getAnswer et renvoie un objet std::future qui peut être utilisé pour récupérer le résultat.

Le programme principal définit un délai d'attente de 5 secondes pour attendre la saisie de l'utilisateur. . Si l'utilisateur saisit une entrée dans ce délai, le programme définit la variable de réponse sur l'entrée. Sinon, la valeur par défaut est "peut-être".

Cette approche de saisie non bloquante permet au programme de poursuivre ses calculs et ses sorties en cours tout en répondant efficacement aux entrées de l'utilisateur. C'est une technique puissante pour créer des applications C interactives.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal