記事の内容が間違っているという指摘ではないです。keen さんが知っている内容かもしれないです。誰かが見て少しでも役に立てばと思って書きました。 Go の API 上の I/O は基本ブロッキングです(ランタイムの話ではなく)。ランタイムはファイル I/O のブロッキング処理は別スレッドを起こして処理されます。なおご存じの通りこの数は GOMAXPROCS には依存しません。 ネットワーク I/O の場合はファイルと異なり受信待ちがあるのでその度にスレッドを作っていられません。そこで fd をノンブロッキングにして epoll で別スレッドで I/O を監視し、その fd でブロックしている(実際には何もせずスケジューラは回る) goroutine に通知しています。これが netpoller の役目です。ブロックしていた goroutine は通知を受けて受信処理を継続します。非同期にす