タグ

libuvに関するjustoneplanetのブックマーク (4)

  • libuv (libev) と Objective-C autorelease のはまりポイント - unknownplace.org

    iOS や Mac アプリで HTTP 以外のネットワーク機能をつけたいといった場合に、libuv や libev を組み込んで使うというのを割とよくする。方法としては以下のような感じでその機能用のスレッドをつくる: -(void)run { NSThread* thread = [[NSThread alloc] initWithTarget:self selector:@selector(loop) object:nil]; self.thread = thread; [thread release]; [thread start]; } スレッドの中身は大体こんな感じ: -(void)loop { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; uv_loop_t* loop = uv_loop_new(); /

  • Objective-C スレッドと libuv スレッドとのやりとり - unknownplace.org

    libuv 専用スレッドと通常の Objective-C スレッドとのやりとりの仕方、ついでに書いておく。 tl;dr - libuv スレッドから Objective-C スレッドに対して何か送るときは Objective-C の作法がそのまま使える。逆は uv_async を使う libuv スレッドから Objective-C スレッド これは Objective-C の世界の作法がそのまま使える。 iOS4+ と OSX 10.6+ であれば GCD で、 dispatch_async(dispatch_get_main_queue(), ^{ // ここはメインスレッド }); のようなのを書くだけでメインスレッドの動作を定義できるから、そこでメソッド呼ぶなり Notification を発行するなりすれば良いので楽ちん。 それ以下の環境だったら performSelector:

  • libuv の Perl バインディング - unknownplace.org

    気分転換プロジェクトとして、libuvのPerlバインディングを書いている。 typester/p5-UV - GitHub 現状、timerとtcp周りを一通り実装したところ。 実装は愚直にlibuvの関数とperlの関数を1:1に(uv_tcp_init(...)をUV::tcp_init(...)というような形で)マッピングしている。 この実装はlow level APIと位置づけ、その上に使いやすい高レベルなインタフェースをPerl上で用意したいつもり。 このlow level APIをつかったTCP echo serverはこんな感じになる: use strict; use warnings; use UV; my $server = UV::tcp_init(); UV::tcp_bind($server, '0.0.0.0', 3000) && die 'bind error

  • libuv を iOS 対応した件 - unknownplace.org

    だいぶ前から iPhone アプリ作成でネットワーク系の機能を作るときには libev を愛用してるのだが、今日 node をいじっていたら libuv がなかなかよさそうに感じた。 libuv は libev が Windows で動かないからっていう理由で始まったプロジェクトだとおもうけど、Linux などの環境においても libev をラップしつつ、より便利な機能が追加されていていわば C でネットワークプログラミングするためのフレームワークといえるくらいになってる、みたい。(まだ詳しく見たわけじゃないけど) libev は基的に io 監視と timer のみで、socket の生成などは基的に自分で syscall 呼んでつくる必要があるけど、libuv は uv_tcp_* とか uv_udp_* といったAPI郡をもってて便利そう。 あと、非同期 DNS ルックアップがサ

  • 1