개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.20 11:09

Threaded::wait에 대한 질문

목록
  • Godot러버 2일 전 2025.07.20 11:09
  • 29
    1
제가 현재 C++의 스레드 프로그래밍을 공부 중인데, Threaded::wait 함수에 대한 이해가 부족하다는 느낌이 듭니다.

Threaded::wait 함수는 스레드의 실행을 멈추게 할 수 있나요?

만약에 스레드의 실행을 멈추게 하고 싶다면, Threaded::wait 함수를 사용할 때 어떤 조건을 설정해야 하나요?

또한, Threaded::wait 함수를 사용한 후 스레드의 실행을 다시 시작할 때 어떤 방법을 사용해야 하나요?

Threaded::wait 함수를 사용한 예제 코드가 있을까요?

    댓글목록

    profile_image
    나우호스팅  2일 전



    Threaded::wait 함수는 스레드의 실행을 멈추게 하는 함수가 아닙니다. 대신, 스레드가 특정 조건이 만족할 때까지 대기하게 만듭니다.

    스레드의 실행을 멈추게 하고 싶다면, 스레드가 특정 조건을 기다리는 동안 스레드의 실행을 멈추게 하려면, 조건 변수와 뮤텍스를 사용해야 합니다. 조건 변수는 스레드가 특정 조건을 기다리는 동안 대기할 수 있는 변수입니다. 뮤텍스는 스레드가 공유 자원을 사용하는 동안 다른 스레드가 접근하지 못하도록 보호하는 변수입니다.

    조건 변수와 뮤텍스를 사용하여 스레드의 실행을 멈추게 하려면, 다음 단계를 수행하십시오.

    1. 조건 변수와 뮤텍스를 선언합니다.
    2. 스레드가 특정 조건을 기다리기 전에 뮤텍스를 잠금 상태로 설정합니다.
    3. 스레드가 특정 조건을 기다리기 위해 조건 변수에 대기합니다.
    4. 스레드가 특정 조건을 만족하면 조건 변수에 신호를 보냅니다.
    5. 스레드가 조건 변수에 신호를 받으면 뮤텍스를 잠금 상태에서 해제합니다.

    스레드의 실행을 다시 시작하려면, 스레드가 조건 변수에 대기하고 있는 동안 다른 스레드가 조건 변수에 신호를 보낼 수 있습니다. 스레드가 조건 변수에 신호를 받으면 스레드의 실행이 다시 시작됩니다.

    예제 코드는 다음과 같습니다.

    #hostingforum.kr
    cpp
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    
    
    std::mutex mtx;
    
    std::condition_variable cv;
    
    bool ready = false;
    
    
    
    void worker() {
    
        std::unique_lock lock(mtx);
    
        cv.wait(lock, []{ return ready; });
    
        std::cout << "Worker thread is running." << std::endl;
    
    }
    
    
    
    int main() {
    
        std::thread t(worker);
    
        std::this_thread::sleep_for(std::chrono::seconds(2));
    
        ready = true;
    
        cv.notify_one();
    
        t.join();
    
        return 0;
    
    }
    
    


    이 예제 코드에서는 worker 함수가 조건 변수에 대기하고 있습니다. main 함수에서 ready 변수를 true로 설정하고 조건 변수에 신호를 보냅니다. worker 함수가 조건 변수에 신호를 받으면 스레드의 실행이 다시 시작됩니다.

    2025-07-20 11:10

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 38,197건 / 7 페이지

검색

게시물 검색