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>
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!