2012年11月20日 星期二

Go语言数据缓冲与读取等待

在数据传输中一定要用到缓冲器,因为他可以控制数据发送与接受方的速度,不至于因为一方的速效而影响另一方速度.缓冲应该分为两种
  1. 发送速度快,接受速度慢
  2. 发送速度慢,接受速度快
这两种有可能同时存在,比如,开始发送速度快,后来快了,不管怎么样,都要一种机制保证的,有数据就发送,没数据就等待. 在Go语言里的bytes 包有一个buffio,可以缓冲数据,但是,它只保证了发送缓冲,到底,读的时候碰到没数据了,是否等待,就不清楚了,所有,我们要自己实现这样一个机制.这里会用到sync包的cond. 下面是实现代码: