어떻게 C++에서 수면을 취할 수 있습니까?

어떻게 C++에서 수면을 취할 수 있습니까?

2022-06-04 last update

7 minutes reading C++
스레드가 실행 중일 때, 이 스레드는 한동안 멈추었다가 다시 실행될 수 있습니다.이것은 수면이라고 한다.프로그래머는 반드시 라인이 휴면해야 하는지 아닌지를 결정해야 한다.만약 스레드가 반드시 수면을 취해야 한다면, 프로그래머는 반드시 스레드가 수면하는 시간과 장소를 결정해야 한다.
다음 문제는 "선정이 무엇입니까?"스레드는 C++ 프로그램의 하위 프로그램과 같습니다.일반적인 간단한 C++ 프로그램은 하나의 라인과 같다.main () 함수는 사실상 하나의 라인이다.main () 함수는 최고급 함수입니다.C++ 프로그램은 다른 최상위 함수를 가질 수 있습니다.다른 모든 최고급 함수는 정식으로 라인으로 변환할 수 있다.C++main () 함수의 동작은 하나의 루틴과 같아서 어떠한 형식의 변환도 없습니다 (루틴으로 변환).
C++ 표준 이름 공간에는 클래스 정적 클래스this\u thread가 있습니다.이 정태와 유사한 클래스는 구성원 함수를 가지고 있는데,
void sleep_for(rel_time)
화목하다
void sleep_until(abs_time)
이 앞에'this\uthread:'가 있는 함수는main () 함수를 포함하여 모든 라인에서 사용할 수 있습니다.main () 함수는 라인으로 변환할 필요가 없습니다.이 함수 중의 하나하나는 라인을 휴면시키는 데 쓸 수 있다.모든 함수에는 매개 변수가 하나 있다.그러나 매개변수의 유형은 다릅니다.
sleep\u for () 는 상대 시간을 매개 변수로 하고, sleep\u until () 은 절대 시간을 매개 변수로 합니다.rel\u time, 상대 시간, 라인 수면의 지속 시간을 의미합니다.한편, 함수 sleep\uuntil()에 대해 abs\utime는 절대 시간을 나타내고, abs\utime는 수면에서 깨어나는 시간점이다.이 경우 sleep\uuntil () 함수를 실행할 때 스레드가 휴면되기 시작합니다.
C++의 Time\u point는 UNIX 시대 이후의 시점입니다.유닉스 시대는 1970년 1월 1일이다.
본고는 어떻게 라인을 휴면시키는지 소개한다.그것은 어떻게 라인을 작성하는지에 대한 요약부터 시작한다.그것은 또한 어떻게 C++로 간단한 프로그램, 즉 sleep를 만드는지 설명했다.

문장 내용






  • 스레드 인코딩 요약


    다음 프로그램에는 두 개의 스레드가 있습니다. 하나는 main () 함수이고, 다른 하나는 thr입니다.
    #include 
    
    #include 
    
    using namespace std;
    
    
    void funct() {
    
    cout <
    출력:
    Code A goes here.
    
    Code B goes here.
    이 프로그램은 iostream 라이브러리를 포함하는 것부터 시작합니다.다음은 스레드 라이브러리를 포함해야 합니다.뒤의 다음 줄은 한 문장이다.별도의 설명이 없는 한 이 문장은 프로그램에서 아래에 사용하는 모든 이름이 표준 이름 공간인지 확인합니다.그리고 최고급 함수 funct () 의 정의입니다.
    정의 다음은main () 함수입니다.main () 함수도 함수 정의입니다.main () 함수의 첫 번째 문장 실례화 스레드thr.thr의 매개 변수는 최고급 함수 funct () 의 이름입니다.이 실례화에서 함수 funct () 를 호출합니다.유효 스레드는 최상위 함수입니다.main () 함수는 라인과 마찬가지로 라인의 어떤 형식도 설명하지 않지만,funct () 함수는 있습니다.
    main () 함수의 다음 문장은join () 문장입니다.이 문장은 호출 라인의 함수체에 있어야 합니다.이 문장이 없으면main () 라인은 완성될 때까지 실행될 수 있으며,thr 자체는 완성되지 않습니다.사실상, 이 문장이 없다면, g++ 컴파일러는 컴파일러를 컴파일하지 않을 뿐만 아니라, 오류 메시지를 보낼 것이다.

    상대 및 절대 시간 객체 기간


    함수의sleep\u for () 는duration 대상을 매개 변수로 합니다.이것은 상대적인 시간이다.chrono 라이브러리를 포함하면 다음과 같이 상대 시간 객체를 만들 수 있습니다.
    chrono::hours hs(3);
    
    chrono::minutes ms(3);
    
    chrono::seconds ss(3);
    
    chrono::milliseconds mss(3);
    
    chrono::microseconds miss(3);
    여기에는 3시간 동안 이름이 있습니다. hs;3분, 이름, ms;3초, 이름은 ss;3밀리초, 이름은 mss;그리고 3초짜리 이름, 아가씨.
    1ms=1/1000초.1 마이크로초 = 1/1000000초.

    시간


    C++의 Time\u point는 UNIX 시대 이후의 시점입니다.유닉스 시대는 1970년 1월 1일이다.절대 시간입니다.함수 sleep\u until () 은 절대 시간 객체를 매개변수로 사용합니다.chrono 라이브러리를 포함하면 다음과 같이 절대 시간 객체를 만들 수 있습니다.
    chrono::system_clock::time_point tp = chrono::system_clock::now() + chrono::hours(3);
    
    chrono::system_clock::time_point tp = chrono::system_clock::now() + chrono::minutes(3);
    
    chrono::system_clock::time_point tp = chrono::system_clock::now() + chrono::seconds(3);
    
    chrono::system_clock::time_point tp = chrono::system_clock::now() + chrono::milliseconds(3);
    
    chrono::system_clock::time_point tp = chrono::system_clock::now() + chrono::microseconds(3);
    모든 대상의 이름은 tp입니다.

    상대 시간에 따라 잠을 자다 주요 기능


    상대 시간이나 지속 시간에 따라 잠을 자려면sleep\u for () 함수를 사용해야 합니다. 앞에'this\uthread:'를 붙여야 합니다.지속 시간은 함수가 실행될 때부터 시작됩니다.main () 함수는 주 루틴입니다. 아무런 설명도 필요 없습니다.다음 프로그램에서 주 기능은 1초 동안 휴면합니다.
    #include 
    
    #include 
    
    #include 
    
    using namespace std;
    
    
    int main()
    
    {
    
    cout <
    출력:
    Code A goes here.
    1초 후,
    Code B goes here.
    표시이 단일 루틴 프로그램은 루틴 성명이 없습니다.라인은main () 함수이기 때문이다.chrono 라이브러리와 루틴 라이브러리를 포함합니다.
    출력은 자주 함수에 대한 두 문자열입니다.이러한 문자열 사이에는 다음과 같은 코드가 있습니다.
    chrono::seconds ss(1);
    
    this_thread::sleep_for(ss);
    수면 기능을 어떻게 사용하는지 주의하세요.

    일반 스레드


    일반적인 스레드의 해석은 위의 해석과 유사하지만, 시간 코드는 실제 스레드에 있다.다음 프로그램에서 스레드는 1초 동안 휴면합니다.
    #include 
    
    #include 
    
    #include 
    
    using namespace std;
    
    
    void funct() {
    
    cout <
    출력:
    Code A goes here.
    1초 후,
    Code B goes here.
    표시여기에는 두 개의 라인이 있습니다. 일반적인 라인과main () 함수입니다.chrono 라이브러리와 루틴 라이브러리를 포함합니다.
    출력은 일반 루틴 함수체의 두 문자열입니다.이러한 문자열 사이에는 다음과 같은 코드가 있습니다.
    chrono::seconds ss(1);
    
    this_thread::sleep_for(ss);
    이 두 문장 사이의 관계를 주의하십시오.

    절대 시간으로 자요.


    절대 시간에 따라 잠을 자려면 sleep\u until () 함수를 사용해야 합니다. 앞에 "this\u thread:"를 붙여야 합니다.시간은 유닉스 시대부터 시작하여 장래까지 계속된다.절대나 시점 매개 변수가 과거라면 무시됩니다.따라서 라인은 사실상 미래의 어느 시점에 깨어나야 한다.

    주요 기능


    main () 함수는 주 루틴입니다. 아무런 설명도 필요 없습니다.다음 프로그램에서 주 함수는 1970년 1월 1일부터 1초 동안 휴면됩니다(UNIX 기원).
    #include 
    
    #include 
    
    #include 
    
    using namespace std;
    
    
    int main()
    
    {
    
    cout <
    출력:
    Code A goes here.
    1초 후,
    Code B goes here.
    표시이것은 스레드 성명이 없는 단일 스레드 프로그램입니다.라인은main () 함수이기 때문이다.chrono 라이브러리와 루틴 라이브러리를 포함합니다.
    출력은 주 함수의 두 문자열입니다.이러한 문자열 사이에는 다음과 같은 코드가 있습니다.
    chrono::system_clock::time_point tp = chrono::system_clock::now() + chrono::seconds(1);
    
    this_thread::sleep_until(tp);
    수면 기능을 어떻게 사용하는지 주의하다

    일반 스레드


    일반적인 스레드의 해석은 위의 해석과 유사하지만, 시간 코드는 실제 스레드에 있다.다음 프로그램에서 라인은 현재 1초까지 휴면합니다.
    #include 
    
    #include 
    
    #include 
    
    using namespace std;
    
    
    void funct() {
    
    cout << "Code A goes here." <
    출력:
    Code A goes here.
    1초 후,
    Code B goes here.
    표시여기에는 두 개의 라인이 있습니다. 일반적인 라인과main () 함수입니다.chrono 라이브러리와 루틴 라이브러리를 포함합니다.
    출력은 일반 루틴 함수체의 두 문자열입니다.이러한 문자열 사이에는 다음과 같은 코드가 있습니다.
    chrono::system_clock::time_point tp = chrono::system_clock::now() + chrono::seconds(1);
    
    this_thread::sleep_until(tp);
    이 두 문장 사이의 관계를 주의하십시오.

    결론


    라인을 한동안 휴면시킬 수도 있고, 유닉스 시대 이후의 어느 시간에 휴면하고 깨울 수도 있다.한동안 잠을 자려면 sleep\u for () 함수를 사용하십시오.잠을 자고 깨려면 sleep\u until () 함수를 사용합니다.각 함수 앞에는 "this\u 스레드:"를 추가해야 합니다.일반적인 간단한 C++ 프로그램은 단일 루틴 프로그램입니다.이곳의 스레드는main () 함수입니다. 스레드 설명이 필요하지 않습니다.