1. 非同期 I/O 概説 Introduction to Asynchronous I/O AIO, I/O Multiplexing…
![Aio](https://cdn-ak-scissors.b.st-hatena.com/image/square/e14cb0c0633028d0083f871858972857c6973673/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Faio-1208760886083001-9-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
Perl Hackers Hub 第6回 UNIXプログラミングの勘所(2)を読んでいたがよくわからなかったので、Operating System ConceptsやMANなどを読んで一から理解してみる。 Operating System Concepts 作者: Abraham Silberschatz出版社/メーカー: John Wiley & Sons Ltd発売日: 2009/02/13メディア: ペーパーバック購入: 1人 クリック: 39回この商品を含むブログ (4件) を見る open()システムコール The open() system call first searches the system-wide open-file table to see if the file is already in use by another process. If it is, a
分散KVS kumofs のコードは、全体で約2万行です*1。 そのうち、ネットワークI/Oやプロトコルに関するコードは約1万行*2で、全体の約半分を占めています。 ロジックは残りの半分*3だけで実装されています。 この実例から分かりますが、kumofsのような分散アプリケーションを開発するにはI/O周りの実装が大変で、とてつもなく大きな障壁になっています。*4 さらに今日では、性能を稼ぐためにマルチスレッド化が必須です。また、多数のクライアントを少ないリソースで効率よく相手にするには、非同期・イベント駆動型のアーキテクチャも必要になります。さらに、究極的な性能を達成すべく GC を利用しない C++ においては、実装のみならず設計も大変です。 これに加えてソケットAPIの難解な挙動に対処にしなければならないため、C言語やC++によるネットワークプログラミングは、vimの使いこなしなどと同
AnyEvent::AIOをとりあえず試す まだこう、細かいpros/consがわからないのでなんとも言えないんだけど、とりあえずaio_open/aio_writeと普通のopen/print/closeで同じ事した場合とでベンチマークとか取ってみた。これでいいのかなー 環境はMac OS X 10.5.8, 2.4 GHz Intel Core 2 Duo, 4GM RAM. Comparing with buffer size 10... Rate normal aio normal 80.0/s -- -19% aio 99.0/s 24% -- Comparing with buffer size 100... Rate normal aio normal 80.0/s -- -18% aio 97.1/s 21% -- Comparing with buffer size 1
間違ってたらツッコミお願いします。 ext4 が出たタイミングで話題になったことだけど、(ext4 に関係なく一般論として) ファイルを安全に書き換えるためには、いくつかの手順を踏む必要がある。で、Perl だとだいたい以下のようになる。 # 1) 適当なテンポラリファイル名 (格納先と同ディレクトリ) my $newfn = "tmp.$$"; # 2) ファイルを書いて fsync open my $fh, '>', $newfn or die "failed to open file:$newfn:$!"; print $fh $data; IO::Handle::flush($fh); or die "flush failed:$!"; IO::Handle::sync($fh); or die "fsync failed:$!"; close $fh; # 3) 古いファイルを別
Perl › ファイル入出力 › here ファイルを読み込んで同じファイルに書き込むときは、読み書きできるオープンモード "+<" を指定して、書き戻すことは非常に危険です。もし書きこんでいる最中にシステムがクラッシュすると、ファイルが破損して復元することができなくなるからです。 安全に書き込みを行うためには、いったん新しいファイルに書き込んでから、ファイル名を元のファイル名に変更することで上書きするようにします。 以下は、安全な読み書きをするためのサンプルです。エラーチェックをしっかり行う必要があります。 use strict; use warnings; # ファイル名を変更するために使用する。 use File::Copy; # 編集して書き戻すので指定するファイルは注意してください。 my $infile = shift; # 一時ファイル。他のプロセスとなるべく # 重ならない
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く