タグ

kqueueに関するsyo-yuのブックマーク (2)

  • FreeBSDでaio - その2 - (ひ)メモ

    (id:hirose31:20070719:1184773995 の続き) できた。 my_aiocb.aio_sigevent.sigev_notify = SIGEV_KEVENT を使えばおk その名の通り、kqueue + kevent を組み合わせて非同期I/Oできたす。 必要な大きさのstruct kevent *をまろっくして kqueue()をこさえて aiocbの通知設定をして my_aiocb.aio_sigevent.sigev_notify = SIGEV_KEVENT; my_aiocb.aio_sigevent.sigev_notify_kqueue = my_kqueue; my_aiocb.aio_sigevent.sigev_value.sival_ptr = iocb; aio_read or aio_write して非同期I/Oリクエストをして kev

    FreeBSDでaio - その2 - (ひ)メモ
  • *BSD で kqueue・kevent を使ってみよう

    *BSD で kqueue・kevent を使ってみよう select() の欠点 select() は複数のディスクリプタをポーリングできる便利なシステムコールです。 しかしパフォーマンスはよくありません。理由は以下の通りです。 ユーザプロセスは、監視対象のディスクリプタ一覧をユーザ領域からカーネル領域にコピーする必要がある。 カーネルがポーリング結果をユーザ領域に返す際もコピーしなければならない。 カーネルは、ポーリング対象のディスクリプタを知るために、配列の全要素を調べなければならない。 ユーザプロセスも、入出力可能なディスクリプタを知るために、配列の全要素を調べなければならない。 上記の作業は、select() を発行するたびに毎回行わなければならない。 select() のパフォーマンスが悪いことは広く知られていたので、 各 OS でいろいろな取り組みが行われてきました。 Sol

  • 1