모듈: Mongo::BackgroundThread Private
- 다음을 포함합니다.
- 로깅 가능
- 포함 항목:
- Cluster::PeriodicExecutor, Server::ConnectionPool::Populator, Server::Monitor, Server::PushMonitor, Srv::Monitor
- 다음에 정의됨:
- 빌드/ Ruby-driver-v2.19/lib/mongo/background_thread.rb
개요
이 모듈은 비공개 API의 일부입니다. 이 모듈은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
종료자에서 백그라운드 스레드를 시작하거나 중지하지 마세요. jira.mongodb.org/browse/RUBY-2453 를 참조하세요. 및 16288. 인터프리터가 종료되면 백그라운드 스레드가 먼저 중지되고 다음으로 파이널라이저가 호출되며, 스레드가 참조되는 경우 이 시점에서 MRI의 내부 데이터 구조가 기본적으로 손상됩니다. 인터프리터가 종료되기 전에는 스레드가 범위를 벗어나는 객체에 의해 중지될 수 없음을 의미하지만, 작업이 수행 중인 경우 스레드가 해당 객체에 대한 참조를 보유하고 있을 가능성이 높으므로 객체가 처음부터 범위를 Go 않습니다.
실행!, 실행? 그리고 중지! 이전에는 일부 클래스에서 공개 API 의 일부로 제공되던 메서드가 이제 이 모듈을 포함합니다. 따라서 이러한 메서드는 이전 버전과의 호환성을 위해 드라이버의 공개 API 의 일부로 간주되어야 합니다. 그러나 운전자 외부에서 이러한 메서드를 사용하는 것은 더 이상 사용되지 않습니다.
상수 요약
Loggable에서 포함된 상수
인스턴스 메서드 요약 접기
-
#실행! ⇒ 객체
백그라운드 스레드를 시작합니다.
- #실행 중이세요? ⇒ 부울
-
#그만해! ⇒ true | false
배경 스레드를 중지하고 가 합리적인 시간 동안 종료될 때까지 기다립니다.
Loggable에 포함된 메서드
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
인스턴스 메서드 세부 정보
#실행! ⇒ 객체
백그라운드 스레드를 시작합니다.
스레드가 이미 실행 중인 경우 이 메서드는 아무 작업도 수행하지 않습니다.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/background_thread.rb', 줄 46 def 실행! 만약 @stop_requested && @thread wait_for_stop 만약 @thread.alive? log_warn("새 백그라운드 스레드를 #{self}에서 시작하지만 이전 백그라운드 스레드는 여전히 실행 중입니다.") @thread = nil end @stop_requested = 거짓 end 만약 실행? @thread other 시작! end end |
#실행? ⇒ 부울
63 64 65 66 67 68 69 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/background_thread.rb', 줄 63 def 실행? 만약 @thread @thread.alive? other 거짓 end end |
#그만해! ⇒ true | false
배경 스레드를 중지하고 가 합리적인 시간 동안 종료될 때까지 기다립니다.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/background_thread.rb', 줄 77 def 중지! # 스레드가 시작되지 않은 경우 중지할 항목이 없습니다. # # 이 모듈을 포함한 클래스는 추가 작업을 수행할 수 있습니다. 이 메서드를 재정의하여 수행할 수 있습니다. 반환 true 하지 않는 한 @thread # 백그라운드 스레드는 일반적으로 루프에서 작업을 수행합니다. # 이 플래그는 # 작업 중인 루프와 스레드는 이 플래그가 #이 설정되었습니다. @stop_requested = true # 플래그를 설정하는 것 외에도 특정 클래스에 # 배경 스레드에 작동을 중지하거나 # 일어나서 중지 플래그를 확인합니다( 예시: 세마포어 설정). # 이 작업은 pre_stop 메서드를 제공하여 수행할 수 있습니다. pre_stop # 이제 단계적 종료를 요청했으며 다음을 기다릴 수 있습니다. # 스레드가 저절로 종료되도록 합니다. 향후 버전 # 드라이버는 스레드가 종료될 때까지 일정 시간을 허용할 수 있습니다. # 지금은 Ruby 기계를 추가로 사용하여 스레드를 요청 합니다. # 종료되며 즉시 종료됩니다. # # 이로 인해 배경 스레드가 종료될 수 있습니다. # 작업 중입니다. @thread.kill wait_for_stop end |