読みきった。一周目の所感を書く。
- 作者: Michael Kerrisk,千住治郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/12/01
- メディア: 大型本
- クリック: 14回
- この商品を含むブログ (7件) を見る
読みきった。一周目の所感を書く。
Rubyの、 Time.now
は最終的には clock_gettime(3)
を呼び出しているそうな。
Time.now
は Time.new
を無引数で呼び出しているに過ぎないTime#initialize
の実態は time_init
time_init
は引数がない場合 time_init_0
を呼ぶtime_init_0
は timespec 構造体のポインタを引数に rb_timespec_now
を呼ぶrb_timespec_now
で clock_gettime(3)
が使えるシステムであればそれを呼ぶ。そうでない場合 gettimeofday(2)
らしい…ここで、以下のような小さなCのコードを書く。
続きを読む先日の 名古屋Ruby会議03 、「未来のサーバ基盤へのHaconiwa/mrubyの関わり」ということで、Haconiwaについて、開発の近況、そして FastContainer構想 などについて話しました。
Rubyistの皆さんの前で(日本語で)トークするのは多分これが初回ということで、いろいろな反応やフィードバックがいただけてありがたいことでした。
トークも、須藤さんや咳さんの濃いお話を始め*1、Rubyが得意なフレンズの楽しそうな様子が見られて良かったです。
地域Ruby会議というのは僕の原点で、コミュニティや技術者としての意識が変わったのがかつての 東京Ruby会議05 だったので、今改めて当時の実行委員長こしばさんのトークを聞けたのも、ちょっとした感慨でした*2。
そうして気持ちが上がって、あと酔って @hfm さんにコミュニティの大事さとか便利さを語ってしまった気がする(おっくんのトーク濃くて良かったよ!)…
そんな感じで、Rubyistの自分を再確認するなどしていました。運営委員の皆様、良い会議をありがとうございました!
libuv経由で(uv_fs_open
などで)作ったファイルへの参照(uv_fs_t
)は基本的に非同期IOになるので、libuvのイベントループで取り扱うのに向いている。参照。
そうでないような同期的なIOのfile descriptor(fd)、たとえば普通にパイプで作ったやつや、 eventfd のようなものをlibuvのループで非同期的に待ちたい時には、 uv_poll_t
が使えるそう。
mruby-uv では UV::Poll
がその構造体と関数をラップしている。以下はパイプの片割れをポーリングして、もう一方には UV::Timer
経由で遅れて書き込むまで待つ例。
r, w = IO.pipe poll = UV::Poll.new(r.fileno, UV.default_loop) poll.start(UV::Poll::READABLE) do |e| # e = 1 が渡ってくる。これは UV::Poll::READABLE の値 puts "Event!!: #{e}" puts "Message: #{r.read.inspect}" # 読み出し可能になったらこのブロックは無限ループする。なので自分で止める poll.stop end count = 0 timer = UV::Timer.new(UV.default_loop) timer.start(1000, 1000) do print "." count += 1 if count > 10 puts w.print "<message>" w.close timer.stop end end puts "Waiting..." UV.run() puts "Exit loop"
利用したmgem: