モジュール: Mongo::BackgroundThread Private

次のことが含まれます。
ログ記録可能
次のドキュメントに含まれます。
クラスター:: PerioshedExecutor 、 Server ::ConnectionPool::Populator 、 Server::Monitor 、 Server::PushMonitor 、 Srv::Monitor
定義:
lib/mongo/background_thread.rb

Overview

このモジュールはプライベート API の一部です。 このモジュールは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

アナライザでバックグラウンド スレッドを開始または停止しないでください。詳しくは、https://JIRA.mongodb.org/browse/RUBY-2453 を参照してください。と https://bugs.ruby-lang.org/issues/16288.インタープリターが終了すると、バックグラウンド スレッドはまず停止され、次にファイナライザーが呼び出されます。スレッドが参照されている場合は、この点で MRI の内部データ構造が基本的に破損します。インタープリターのシャットダウン前は、スコープ外のオブジェクトによってスレッドを停止できないことを意味しますが、作業が実行されている場合は、スレッドがこれらのオブジェクトへの参照を保持する可能性が高いため、オブジェクトは最初からスコープを外れることはありません。

実行する!、実行中?、そして停止!このモジュールを含む一部のクラスのパブリックAPIの一部として使用されるメソッド。したがって、これらのメソッドは、下位互換性の理由でドライバーの公開APIの一部と見なす必要があります。ただし、ドライバー外でこれらのメソッドを使用する場合は非推奨です。

定数の概要

Loggableに含まれる定数

ログ可能::PRFIX

インスタンス メソッドの概要を折りたたむ

Loggableに含まれるメソッド

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

インスタンス メソッドの詳細

#実行します。 =オブジェクト

バックグラウンド スレッドを開始します。

スレッドがすでに実行中の場合、このメソッドは何も実行しません。



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
ファイル 'lib/mongo/background_thread.rb' 行 44

デフォルト 実行します。
  場合 @stop_requested & & @thread
    wait_for_stop
    場合 @thread.alive?
      log_警告(「 #{ 自身 の } で新しいバックグラウンド スレッドを開始して いますが、前のバックグラウンド スレッドはまだ実行中です 」)
      @thread = nil
    end
    @stop_requested = false
  end
  場合 実行中
    @thread
  else
    開始します。
  end
end

は で実行されていますか? =ブール値

次の値を返します。

  • (ブール値)


61
62
63
64
65
66
67
ファイル 'lib/mongo/background_thread.rb' 行 61

デフォルト 実行中
  場合 @thread
    @thread.alive?
  else
    false
  end
end

#停止します。 = true | false

バックグラウンド スレッドを停止し、 が十分な時間終了するまで待ちます。

次の値を返します。

  • ( true | false ) —

    スレッドが終了されたかどうか。



75
76
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
ファイル 'lib/mongo/background_thread.rb' 行 75

デフォルト 停止します。
  # スレッドが開始されていない場合は、停止するものはありません。
  #
  このモジュールを含むクラスでは、追加の
  このメソッドをオーバーライドすることで、# クリーンアップを実行できます。
  return true ただし、 @thread

  バックグラウンド スレッドは通常、ループ内で操作を実行します。
  # このフラグは、次の反復ごとにチェックすることを目的としています:
  作業ループが 個ある場合、このフラグは 個のドキュメントの動作を停止する必要があります。
  # が設定されています。
  @stop_requested = true

  # フラグを設定するだけでなく、特定のクラスには追加の
  バックグラウンド スレッドに動作の停止を指示する多数の方法
  # では、セカンダリの設定など、停止フラグを確認するために起動します。
  # これは pre_stop メソッドを提供することで実行できます。
  pre_stop

  # グレースフル終了をリクエストしたため、待機できました
  # の場合は、スレッドは単独で終了します。 の将来のバージョン
  # ドライバーではスレッドが終了するまで一定の時間が許可される場合があります。
  #今は、スレッドをリクエストするためにRuby マシンを追加して使用します
  および は、ただちに終了します。
  #
  これにより、バックグラウンド スレッドが次の場合に終了する可能性があることに注意してください。
  # 操作の途中。
  @thread.kill

  wait_for_stop
end