モジュール: Mongo::BackgroundThread Private
- 次のことが含まれます。
- ログ記録可能
- 次のドキュメントに含まれます。
- クラスター:: PerioshedExecutor 、 Server ::ConnectionPool::Populator 、 Server::Monitor 、 Server::PushMonitor 、 Srv::Monitor
- 定義:
- build/ruby-Driver-v 2.19 /lib/mongo/background_thread.rb
Overview
このモジュールはプライベート API の一部です。 このモジュールは将来削除または変更される可能性があるため、可能な限り使用しないでください。
アナライザでバックグラウンド スレッドを開始または停止しないでください。 JIRA.mongodb.org/browse/Ruby-{1 2453を参照してください とbuckets.ruby-lang.org/issues/ 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-v 2.19 /lib/mongo/background_thread.rb ', 行46 デフォルト 実行します。 場合 @stop_requested & & @thread wait_for_stop 場合 @thread.alive? log_警告(「 #{ 自身 の } で新しいバックグラウンド スレッドを開始して いますが、前のバックグラウンド スレッドはまだ実行中です 」) @thread = nil end @stop_requested = false end 場合 実行中 @thread else 開始します。 end end |
は で実行されていますか? =ブール値
63 64 65 66 67 68 69 |
ファイル ' build/ruby-Driver-v 2.19 /lib/mongo/background_thread.rb ', 行63 デフォルト 実行中 場合 @thread @thread.alive? else false 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-v 2.19 /lib/mongo/background_thread.rb ', 行77 デフォルト 停止します。 # スレッドが開始されていない場合は、停止するものはありません。 # このモジュールを含むクラスでは、追加の このメソッドをオーバーライドすることで、# クリーンアップを実行できます。 return true ただし、 @thread バックグラウンド スレッドは通常、ループ内で操作を実行します。 # このフラグは、次の反復ごとにチェックすることを目的としています: 作業ループが 個ある場合、このフラグは 個のドキュメントの動作を停止する必要があります。 # が設定されています。 @stop_requested = true # フラグを設定するだけでなく、特定のクラスには追加の バックグラウンド スレッドに動作の停止を指示する多数の方法 # では、セカンダリの設定など、停止フラグを確認するために起動します。 # これは pre_stop メソッドを提供することで実行できます。 pre_stop # グレースフル終了をリクエストしたため、待機できました # の場合は、スレッドは単独で終了します。 の将来のバージョン # ドライバーではスレッドが終了するまで一定の時間が許可される場合があります。 #今は、スレッドをリクエストするためにRuby マシンを追加して使用します および は、ただちに終了します。 # これにより、バックグラウンド スレッドが次の場合に終了する可能性があることに注意してください。 # 操作の途中。 @thread.kill wait_for_stop end |