Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Program C Boleh Melaksanakan Input Konsol Asynchronous?

Bagaimanakah Program C Boleh Melaksanakan Input Konsol Asynchronous?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 07:01:29485semak imbas

How Can C   Programs Implement Asynchronous Console Input?

Input Konsol Tak Segerak untuk Program C

Input konsol tidak menyekat adalah penting untuk mengendalikan arahan pengguna semasa program berjalan secara berterusan. Dalam C , terdapat pelbagai pendekatan untuk mencapainya.

C 11 Solution

Satu kaedah berkesan menggunakan C 11 ialah menggunakan std::thread dan <code class="hljs">std::perpustakaan masa hadapan. Berikut ialah contoh:

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

Dalam contoh ini, pustaka std::thread digunakan untuk mencipta utas berasingan yang mengendalikan input sementara utas utama meneruskan pelaksanaan. Pustaka <code class="hljs">std::future digunakan untuk mendapatkan semula input daripada utas berasingan secara tidak segerak.

Pendekatan ini membenarkan atur cara untuk mengeluarkan maklumat sambil mengendalikan arahan pengguna secara serentak, menyediakan antara muka pengguna yang responsif dan tidak menyekat .

Atas ialah kandungan terperinci Bagaimanakah Program C Boleh Melaksanakan Input Konsol Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn