タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Programmingとunixとnetworkに関するmatsutakegohan1のブックマーク (3)

  • C++と Pthreads でミニマルなHTTPサーバを書く - いやなブログ

    C++と Pthreads でミニマルなHTTPサーバを書く 『UNIXネットワークプログラミング』を読んでいると、自分でも何かネットワーク系の小さなプログラムを書いてみたくなりました。そこで、ミニマルなHTTPサーバを C++と Pthreads で書いてみました。 同じ著者の「詳解UNIXプログラミング」もそうだったように、今回のもほとんどすべてのページに、重要なことが書かれています(最後のほうのXTIの部分は例外かもしれませんが)。 たとえば、27章ではネットワークサーバの実装として、次の設計方針がそれぞれ検討され、実際のコード付きで解説されています。 クライアントごとに fork 事前に fork - 各プロセスで accept 事前に fork - ファイルロックで accept を保護 事前に fork - Mutex ロックで accept を保護 (PTHREAD_PRO

  • mixi Engineers’ Blog » Linux Programming、epollの話

    お久しぶりです、初めての日の夏に圧倒されているトールマエサカです。 今日はLinuxにおけるネットワークプログラミング関連のネタです。分散データベースサーバの開発過程で最近よくLinuxのepollというイベントハンドリング機能を使っています。これがまた優秀な機能なので紹介します。 このContextでいうイベントハンドラーはサーバがクライエントのリクエストを処理するためのメカニズムです。イベントの感知と通知は大雑把にいうと以下の三つの処理で構成されています: 一つもしくは複数のディスクリプタを監視 ディスクリプタの準備が整うまでハチ公のごとくひたすら待ち続ける 準備が整ったディスクリプタの通知 アプリケーションでの実装は一昔までselect(2)、もしくはpoll(2)というシステムコールで行われていました。二つとも役目は同じですがselect(2)の場合、kernelをいじらない限り

    mixi Engineers’ Blog » Linux Programming、epollの話
  • *BSD で kqueue・kevent を使ってみよう

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

  • 1