>  기사  >  백엔드 개발  >  C 프로그램은 어떻게 비동기 콘솔 입력을 구현할 수 있습니까?

C 프로그램은 어떻게 비동기 콘솔 입력을 구현할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-02 07:01:29485검색

How Can C   Programs Implement Asynchronous Console Input?

C 프로그램용 비동기 콘솔 입력

프로그램이 계속 실행되는 동안 사용자 명령을 처리하려면 비차단 콘솔 입력이 필수적입니다. C에는 이를 달성하기 위한 다양한 접근 방식이 있습니다.

C 11 솔루션

C 11을 사용하는 효과적인 방법 중 하나는 std::thread 및 <code class="hljs">std::미래 라이브러리. 예는 다음과 같습니다.

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

이 예에서는 std::thread 라이브러리를 사용하여 기본 스레드가 실행을 계속하는 동안 입력을 처리하는 별도의 스레드를 생성합니다. <code class="hljs">std::future 라이브러리는 별도의 스레드에서 비동기적으로 입력을 검색하는 데 사용됩니다.

이 접근 방식을 사용하면 프로그램이 사용자 명령을 처리하는 동시에 정보를 출력할 수 있어 응답성이 뛰어나고 차단되지 않는 사용자 인터페이스를 제공할 수 있습니다. .

위 내용은 C 프로그램은 어떻게 비동기 콘솔 입력을 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.