개발자 Q&A

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

2025.03.12 05:22

parallelSync::notify에 대한 질문

  • 스레드마스터 5일 전 2025.03.12 05:22
  • 1
    1
저는 parallelSync::notify 함수를 사용하여 병렬 동기화를 구현하려고 합니다. 하지만, notify 함수의 동작 원리에 대해 이해가 잘 안됩니다.

notify 함수는 어떤 상황에서 호출되어야 하는지 알려주세요. 또한, notify 함수가 호출된 후에 어떤 일이 발생하는지 설명해 주세요.

특히, notify 함수가 호출된 후에 다른 스레드가 notify 함수를 호출하는 경우, 어떤 동작을 수행하는지 알려주세요.

아래의 코드를 예로 들면, notify 함수가 호출된 후에 다른 스레드가 notify 함수를 호출하는 경우, 어떻게 동작하는지 알려주세요.

cpp

std::mutex mtx;

std::condition_variable cv;



void thread1() {

    std::lock_guard lock(mtx);

    cv.notify_one();

}



void thread2() {

    std::unique_lock lock(mtx);

    cv.wait(lock);

}



위의 코드에서, thread1 함수가 notify 함수를 호출한 후에, thread2 함수가 wait 함수를 호출하는 경우, 어떻게 동작하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  5일 전



    notify 함수는 wait 함수가 호출된 스레드에만 영향을 미칩니다. notify 함수가 호출된 후, wait 함수가 호출된 스레드는 notify 함수가 호출된 스레드가 잠금을释放할 때까지 대기합니다.

    notify 함수가 호출된 후에 다른 스레드가 notify 함수를 호출하는 경우, notify 함수가 호출된 스레드에만 영향을 미치지 않습니다. 다른 스레드가 notify 함수를 호출하면, wait 함수가 호출된 스레드가 대기하는 상태를 변경하지 않습니다.

    위의 코드를 예로 들면, thread1 함수가 notify 함수를 호출한 후에, thread2 함수가 wait 함수를 호출하는 경우, thread2 함수는 notify 함수가 호출된 후에 대기합니다. thread1 함수가 notify 함수를 호출한 후에, thread2 함수가 notify 함수를 호출하는 경우, thread2 함수는 대기하지 않고 notify 함수가 호출된 스레드에만 영향을 미칩니다.

    notify 함수는 wait 함수가 호출된 스레드에만 영향을 미치므로, notify 함수가 호출된 후에 다른 스레드가 notify 함수를 호출하는 경우, wait 함수가 호출된 스레드의 대기 상태를 변경하지 않습니다.

    2025-03-12 05:23

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

검색

게시물 검색