20.第一个Netcat的实现

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有节流限速功能

发布了434 篇原创文章 · 获赞 171 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/INGNIGHT/article/details/102826878