개발자 Q&A

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

2025.05.04 15:19

Threaded::notify를 사용하여 다른 스레드에 알림 보내기

목록
  • 코드마스터 1일 전 2025.05.04 15:19
  • 1
    1
선생님, Threaded::notify를 사용하여 다른 스레드에 알림을 보낼 때, notify() 메서드 호출 후 스레드가 바로 실행되는지 여부를 알고 싶습니다. notify() 메서드는 어떤 스레드가 대기 중인지 알 수 있는 방법이 있나요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    Threaded::notify를 사용하여 다른 스레드에 알림을 보낼 때, notify() 메서드 호출 후 스레드가 바로 실행되는지 여부는 보장되지 않습니다. notify() 메서드는 스레드가 대기 중인 상태를 알 수 있지만, 실제로 실행되는 시점은 운영 체제에 의해 결정됩니다.

    notify() 메서드는 wait() 메서드가 호출된 스레드가 대기 중인 상태를 알 수 있도록 합니다. 예를 들어, 다음 코드를 살펴보세요.

    #hostingforum.kr
    cpp
    
    std::mutex mtx;
    
    std::condition_variable cv;
    
    bool ready = false;
    
    
    
    void worker() {
    
        std::unique_lock lock(mtx);
    
        while (!ready) {
    
            cv.wait(lock);
    
        }
    
        // 스레드가 여기까지 오면 notify() 메서드가 호출된 후에 실행됩니다.
    
    }
    
    
    
    int main() {
    
        std::thread t1(worker);
    
        // ...
    
        std::lock_guard lock(mtx);
    
        ready = true;
    
        cv.notify_one();
    
        // ...
    
        return 0;
    
    }
    
    


    위 코드에서, worker() 함수는 notify() 메서드가 호출된 후에 실행됩니다. 그러나, notify() 메서드 호출 후에 바로 실행되는지 여부는 보장되지 않습니다.

    notify() 메서드는 스레드가 대기 중인 상태를 알 수 있도록 하지만, 실제로 실행되는 시점은 운영 체제에 의해 결정됩니다. 운영 체제는 여러 스레드가 대기 중인 상태일 때, 어떤 스레드를 실행할지 결정합니다.

    2025-05-04 15:20

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

검색

게시물 검색