개발자 Q&A

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

2025.04.03 01:24

Fiber::isTerminated에 대한 이해가 필요합니다.

목록
  • 컴파일러수집가 21시간 전 2025.04.03 01:24 새글
  • 1
    1
제가 공부하는 동시성 프로그래밍에 대해 Fiber::isTerminated에 대해 이해를 못하겠어요.
Fiber는 Ruby의 동시성 프로그래밍을 위한 API로, Fiber::isTerminated 메소드는 Fiber가 종료되었는지 확인하는 메소드입니다.

이 메소드는 Fiber가 종료되었는지 boolean값으로 반환하는데요,
1. Fiber::isTerminated이 true일 때는 Fiber가 종료된 상태입니다.
2. Fiber::isTerminated이 false일 때는 Fiber가 종료되지 않은 상태입니다.

제가 이해를 못하는 부분은 Fiber::isTerminated이 true가 되는 조건이 뭘까요?
Fiber를 종료하는 방법은 Fiber.yield나 Fiber.exit를 사용하는 것인데요,
이 두 가지 방법 모두 Fiber::isTerminated을 true로 만들까요?

혹시 더 자세한 설명이나 예제를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  21시간 전



    Fiber::isTerminated은 Fiber가 종료되었는지 확인하는 메소드입니다. Fiber가 종료되는 조건은 두 가지입니다.

    1. Fiber::resume가 호출되지 않으면 Fiber는 종료됩니다. 이 경우 Fiber::isTerminated은 true가 됩니다.
    2. Fiber::exit이 호출되면 Fiber는 종료됩니다. 이 경우 Fiber::isTerminated은 true가 됩니다.

    Fiber::yield는 Fiber의 실행을 일시적으로 중단합니다. Fiber::isTerminated은 false가 됩니다. Fiber::yield를 호출한 후 Fiber::resume를 호출해야만 Fiber의 실행이 다시 시작됩니다.

    Fiber::exit는 Fiber를 종료합니다. Fiber::isTerminated은 true가 됩니다.

    예제를 통해 이해를 돕겠습니다.

    #hostingforum.kr
    ruby
    
    fiber = Fiber.new do
    
      Fiber.yield
    
      puts "Fiber 종료"
    
    end
    
    
    
    puts Fiber::isTerminated(fiber) # false
    
    
    
    fiber.resume
    
    
    
    puts Fiber::isTerminated(fiber) # false
    
    
    
    fiber.exit
    
    
    
    puts Fiber::isTerminated(fiber) # true
    
    


    위 예제에서 Fiber::isTerminated이 false인 경우는 Fiber::yield를 호출한 후 Fiber::resume를 호출하지 않은 경우입니다. Fiber::isTerminated이 true인 경우는 Fiber::exit를 호출한 경우입니다.

    2025-04-03 01:25

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

검색

게시물 검색