Bagaimanakah Program C Boleh Melaksanakan Input Konsol Asynchronous?

Patricia Arquette
Lepaskan: 2024-11-02 07:01:29
asal
562 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan