Facebookで投稿や写真などをチェックできます。
ネットワークプログラム周りで、aio_read(3)*1を使う必要が出てきたので、軽く調べてみた。 今回やりたかったのは非同期にIOを発行したあとに別処理を行って、その後取得された結果を使うというものだったのでJavaのFurtureっぽいインターフェイスの実装を行ってみた。 Descriptorクラスのread_async(buf , count)を呼ぶとFurtureDescriptor * が返ってくるので、それに対して別処理を行うなどしたあとget()を呼ぶとread(2)の結果に相当する値が返ってくる。 実装は以下 #include <iostream> #include <cstdlib> #include <unistd.h> #include <aio.h> #include <errno.h> using namespace std; class FurtureDescr
AsyncIOについて(その1)の続き. NONBlockでIO処理をする方法としてselectとシグナルを使う方法があるというのが前回の話だったが, selectはselectよりkqueue,epollで述べたとおり, ビジーループがかかるためあまり効率はよくなく,シグナル方式は制約があるためあまり使い勝手がよくない. というわけで新しく出てきたのがPOSIX Asynchronous I/O(AIO)という機構だ. これはIOのwaitをイベントドリブン形式にしてビジーループをなくそうというものだ. プログラムの流れとしては下記のようになる. 1. 対象となるファイルディスクリプタにシグナルハンドラもしくはイベントハンドラを登録しておく 2. aio_read/aio_writeを呼び出すと制御はすぐにユーザに戻る. 3.対象のファイルディスクリプタの処理が終わると登録されていたハン
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く