タグ

networkとc++に関するf99aqのブックマーク (3)

  • 並列イベント駆動I/Oフレームワーク「mpio」リリース - Blog by Sadayuki Furuhashi

    分散KVS kumofs のコードは、全体で約2万行です*1。 そのうち、ネットワークI/Oやプロトコルに関するコードは約1万行*2で、全体の約半分を占めています。 ロジックは残りの半分*3だけで実装されています。 この実例から分かりますが、kumofsのような分散アプリケーションを開発するにはI/O周りの実装が大変で、とてつもなく大きな障壁になっています。*4 さらに今日では、性能を稼ぐためにマルチスレッド化が必須です。また、多数のクライアントを少ないリソースで効率よく相手にするには、非同期・イベント駆動型のアーキテクチャも必要になります。さらに、究極的な性能を達成すべく GC を利用しない C++ においては、実装のみならず設計も大変です。 これに加えてソケットAPIの難解な挙動に対処にしなければならないため、C言語やC++によるネットワークプログラミングは、vimの使いこなしなどと同

    並列イベント駆動I/Oフレームワーク「mpio」リリース - Blog by Sadayuki Furuhashi
    f99aq
    f99aq 2010/05/04
    おもしろそう。ソース読んでないから std::auto_ptr で良いのか判断がつかないけど、もやもやしてる。
  • dup2(2) - odz buffer

    ref:http://d.hatena.ne.jp/naoya/20070731/1185893412 キモになるのは 複数のサービスをまとめて面倒を見るにあたって、それぞれのサービス用のリスニングソケットを select(2) で多重化する 接続があると fork して子を作り、その子を exec して体のプログラム(daytime.pl や echo.pl に相当するもの) を実行する exec する前にソケットディスクリプタを 0, 1, 2 に dup2(2) する というところです。特に最後のところですね。exec でプログラムを切り替えてもファイルディスクリプタはそのまま継承するので、あらかじめ dup でソケットと標準入出力をつなげておいて exec することで、exec したあとのプログラムの標準入出力が接続ソケットとのやりとり相当になるという。なるほどー。 inetd

    dup2(2) - odz buffer
  • asio C++ library

    Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.

  • 1