タグ

selectに関するhackedのブックマーク (6)

  • node.js とは何か (2) - I am bad at math

    昨日に引き続き、いざ!part2なのだ。 前回では node.js と v8 の結びつきまでを書いたので、今日は Non-Blocking I/O の話を。 Non-Blocking I/O という言葉からブロックしない I/O をイメージするのはたやすい。でもこれを実現しようとなるといろいろとまあ面倒くさいんだよね。 それを解決する常套手段で言うとファイルディスクリプタ(ネットワークならソケットだね)を開いてそれをselectシステムコールの監視対象に加えておき、selectを呼び出すことで監視するっていう方法がある。こうすると何が嬉しいのかファイルディスクリプタが2つある場合で考えてみよう。 まずAとBというファイルディスクリプタを監視対象とする。 selectシステムコールを呼び出し、そのどちらかが読み出し準備完了となっていないかを確認する。 もしどっちも準備できていなかったらプロセ

    node.js とは何か (2) - I am bad at math
  • thd->proc_info="Sending data"について - mir the developer

    MySQLユーザ会MLにて面白そうなネタ(質問投稿)があったので、いつきちゅう。 # mixiの方にかいたけど、gdb中にフリーズ、かなしす。。。気をとりなおして再開。 thd->proc_info="Sendind data"をしているのはsql/sql_select.ccの1827行目。JOIN::exec関数。とりあえずthd->proc_infoが次の状態に移るまでをトレースすることに。 Breakpoint 1, JOIN::exec (this=0x8b017c0) at sql_select.cc:1827 (gdb) bt #0 JOIN::exec (this=0x8b017c0) at sql_select.cc:1827 #1 0x082005bc in mysql_select (thd=0x8ae1a68, rref_pointer_array=0x8ae1e5

    thd->proc_info="Sending data"について - mir the developer
  • ブロックとSelect

    これまで ここのページに書いてある通りにドライバを作ってきていて、動いていたので安心していたのですが、wait_queue の使い方に多少の誤りがあることが分かりました。 この通りでも動作はしますが、真似なさらないことを推奨します。 いずれ、このページは書き換える予定ですが、現在時間が取れず、しばらく先になりそうです。 最近執筆したLinuxJapan誌8月号の記事(配布資料置き場にPDFあり)では、正しいと考えられる使い方で記載しましたので、お急ぎ?の方はこちらをご覧下さい。 勘違いから、誤った情報を流してしまいましたこと、ご容赦下さい。 (前から、なにか引っ掛かる気がしていたのですが、記事執筆中に不安なところを残さないようにと再チェックしていて気づきました...) 時として、ユーザのプロセスで、デバイスの準備待ちをしたい場合があります。 普段使っている用途ですと、キーボードやマウスの操

  • http://japan.internet.com/developer/20080304/26.html

  • selectを使う(タイムアウト付き):Geekなぺーじ

    selectを使うサンプルコード(タイムアウト付き) 下記サンプルコードでは、UDPソケットを2つ作成しています。 作成した2つのUDPソケットは、selectに登録してselectはブロッキング状態に入ります。 UDPソケットにデータが到着するとrecvを行い、受信した内容を表示します。 以前のサンプルとこのサンプルの違いは、タイムアウトを設定している事です。 このサンプルでは、selectの4つめの引数はNULLではなくstruct timevalへのポインタを渡しています。 struct timevalには、10秒を表す値を代入してあります。 このサンプルでは、selectは最大10秒までしかブロッキングしません。 selectがブロッキングを開始してから10秒の時間が経過するとselectは0を返して終了します。 select以後のif文では、selectの返り値が0であればwhi

  • selectよりkqueue,epoll(apache2のススメ) - 最速配信研究会(@yamaz)

    最近3人ほどのエンジニアと話したのだがapache2に対して割とネガティブな意見を持っていた. 曰く「既存モジュールが使えないから」 曰く「スレッドベースってちょっと。。」 曰く「WEBでいい話聞かないから」 3人しか話してないんだけど,3人とも「apache2はスレッドでしか動かない」と思いこんでたようでちょっとおどろいた.apache2でも StartServers 5 MinSpareServers 5 MaxSpareServers 64 MaxClients 100 MaxRequestsPerChild 10000 という設定をすることで今までどおりpreforkモデルで動かすことはできる.preforkモデルだと各種ハンドラもスレッドセーフに無理にすることはないので,わかってて使う分には問題ない. 私がapache2を勧める1番の理由はapache2ではリクエストの多重化処理

    selectよりkqueue,epoll(apache2のススメ) - 最速配信研究会(@yamaz)
  • 1