Working with TCP Sockets 読書メモ 目次
DNSルックアップ
- DNSルックアップに伴う遅延はタイムアウトによる制御ができない
MRIとGIL
- MRI(Matz Ruby Inprementation)にはGIL(Global Interpreter Lock)という仕組みがある
- 潜在的に危険な処理をする際、あるスレッドがアクティブなら別のスレッドの動作をブロックする
- ブロックするIOはGILのブロックの対象外
- C拡張はIOであってもGILのブロック対象
- RubyはDNSルックアップにC拡張を使っている!
resolv
- resolvという標準ライブラリを使えばDNSルックアップを行うことができる
require 'resolv' # ライブラリ本体
require 'resolv-replace' # Socketがresolvを使うようにするモンキーパッチ
- マルチスレッド環境でソケットプログラミングをする際は、このライブラリを使うようにすべき
コメントをどうぞ