Entrée console non bloquante en C : une solution polyvalente
Dans le domaine de la programmation C, la possibilité de gérer une console non bloquante la saisie est cruciale, en particulier lors de la création d'applications qui nécessitent une interaction continue de l'utilisateur, même lors de l'exécution de tâches chronophages. Cet article présente une solution complète utilisant des techniques C modernes et des bibliothèques externes, tirant parti d'une licence permissive pour une flexibilité améliorée.
Approches et considérations
C propose plusieurs approches pour obtenir des résultats non -bloquer l'entrée de la console, chacun avec ses propres avantages et considérations :
Le choix de l'approche dépend des besoins spécifiques et des préférences du programmeur. Pour une solution plus simple et plus directe, le modèle de thread C 11 est une option appropriée.
Exemple : Implémentation d'une entrée de console non bloquante avec C 11
Le code suivant L'extrait montre une entrée de console non bloquante à l'aide du modèle de thread 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>
Dans cet exemple :
Conclusion
Le paradigme de saisie de console non bloquant permet aux programmeurs C de développer des applications interactives qui gèrent de manière transparente commandes utilisateur et effectuer des tâches en arrière-plan simultanément. Les approches proposées offrent différents niveaux de complexité et de fonctionnalités, permettant aux programmeurs de sélectionner la solution la mieux adaptée à leurs besoins.
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!