https://github.com/chenshuo/recipes/blob/master/tpc/bin/netcat.cc
准确说不是每个连接对应一个线程,每个连接对应两个线程,每个线程只管半个连接,管理其中一个方向,收/发,读或者写。
go语言中线程代价低,go routine,channel,select
线程模仿go routine,阻塞队列可以模仿channel
主线程读stdin写socket,另一个线程读socket写stdout
两个线程要么阻塞在read/write上
问题:如何通知另一个线程退出?
进程退出有两个条件,1、读stdin返回0,break 2,读socket返回0,break
阻塞IO有节流限速功能