コンテンツにスキップ

ラジオの話題15:待っている関数は、犯人なのか?

← ラジオの話題一覧 · 元の教材・詳しい解説

今日の話題:①epoll_waitが長い → ②データがあるのに通知されない? → ③同じEAGAINでも意味が違う。

気になったところから自由に。順番や時間は決めず、話しやすい話題だけ拾って構いません。

話を広げるメモ

  • イベントを待つ関数が長く待った。
  • その待ちを終わらせるのは誰?

小ネタ:readiness

epollは登録したFDのI/O可能性を通知する。待ち時間が長いだけでepoll実装の不具合とは言えない。通知を送る側の待ちも辿る。

話の芯:待ちの出口から、通知元へ進む。

2. データがあるのに通知されない?

Section titled “2. データがあるのに通知されない?”

話を広げるメモ

  • 読み残しと、LT・ETの違い。
  • 本番の登録イベントや再登録を確かめた?

小ネタ:levelとedge

LTは読み取り可能な状態が続く間、通知対象になる。ETでは読み残しがあっても次の変化まで待ち得る。ONESHOTや他のreaderもあり、キューの存在だけでは説明しきれない。

話の芯:観測したキューと、監視対象を対応させる。

話を広げるメモ

  • nonblocking recvでのEAGAIN。
  • セマフォ待ちでのEAGAIN。

小ネタ:errnoの文脈

recvではその時点で受信を進められないこと、semtimedopではtimeoutや即時実行できない場合など、呼び出しと条件で意味が違う。エラー名だけで原因をまとめない。

話の芯:番号より先に、どの操作かを読む。

「この話を、次に調査や設計をするときどう思い出したいか?」

既存の調査ケースにある技術補足から構成しました。当時の本人の発言・成果を再現した台本ではありません。思い出せる経験だけを本人の経験として話し、分からない経緯は補わずに使ってください。

定義の詳細・前提・一次資料・対象版・確認日は元の教材を参照してください。今回の作成では新しい実験・学習評価は行っていません。