私はカーネルレベルの非同期I/O(すなわち、libaio.h
)で作業しています。 struct iocb
をio_submit
で送信する前に、iocb->data
に関数ポインタを付けるio_set_callback
を使用してコールバックを設定しました。最後に、io_getevents
を使用して完了したイベントを取得し、各コールバックを実行します。libaioコールバックでのコンテキストデータの適切な処理?
私は、コールバック内でいくつかのコンテキスト情報(送信タイムスタンプなど)を使用できるようにしたいと考えています。私がこれを行うと考えることができる唯一の方法は、io_getevents
を使い続けることですが、iocb->data
はコンテキストとコールバックを持つ構造体を指しています。
io_getevents
を使用すると、このような処理を行う方法は他にありますか?iocb->data
はそのままですか? iocb->data
が関数を指していない場合、libaio
が自動的にコールバックを実行する別の方法があります。
ここでの説明はうまくいくはずです。 libaio
のドキュメントは本当に欠けているようです。
この最後の夜のようなものを一緒に震わせた。あなたの答えは間違いなく、マニュアルページから欠けているいくつかのギャップを埋める! –