1.B的数据产生后,一股脑地发往用户A端,即B只管有数据就发送,不管任何别的情况(如A会不会太累了?)
2.A发一条请求数据的消息给B,B收到这条消息后,就把数据发送给A,A收到这个数据后,使用之,完了后再发送一个数据请求消息给B,于是户B又向A发送数据,如此构成一个循环。第一种方法好像不大妙,A把数据一股脑地塞给B,如果B的速度跟不上,就可能造成数据丢失;并且,B可能还有别的事情要做呢,她不想拼尽全力去接收你的数据。从另一方面来看,如果B的速度跟不上,可能不得不丢弃一些数据,那么A不是白发了吗?好浪费精力呀!!!第二种方法看起来是比较不错的,他看起来很友好嘛,一来一往的。首先,A请求,B才发送,否则不发送,其二,A处理完用完B发来的数据后,才再次向B请求数据。这样以来,数据既不会丢失,双方又不至于做无用功。但是,计算机很老实呀,她不会偷懒,也就是,A向B请求数据,B向A发送数据,A消费数据,A再向B请求数据---这个循环会狠命地进行,CPU绝对100%使用。这看起来又不爽了,WINDOWS的分时系统,时间片分得还是蛮长的,所以当从这个程序切换到另一个程序时,是有延时感的,所以这个方式看起来也不尽如人意。
各位以为怎么样?有什么看法,特别的设计?

解决方案 »

  1.   

    就是比如做视频聊天的时候,用户A和用户B间的数据(主要是视频数据)是如何交换的呢?这里为明了起见,只考虑A如何从B那里获得B的数据,考虑这两种方式:
    1.B的数据产生后,一股脑地发往用户A端,即B只管有数据就发送,不管任何别的情况(如A会不会太累了?)
    2.A发一条请求数据的消息给B,B收到这条消息后,就把数据发送给A,A收到这个数据后,使用之,完了后再发送一个数据请求消息给B,于是户B又向A发送数据,如此构成一个循环。第一种方法好像不大妙,A把数据一股脑地塞给B,如果B的速度跟不上,就可能造成数据丢失;并且,B可能还有别的事情要做呢,她不想拼尽全力去接收你的数据。从另一方面来看,如果B的速度跟不上,可能不得不丢弃一些数据,那么A不是白发了吗?好浪费精力呀!!!第二种方法看起来是比较不错的,他看起来很友好嘛,一来一往的。首先,A请求,B才发送,否则不发送,其二,A处理完用完B发来的数据后,才再次向B请求数据。这样以来,数据既不会丢失,双方又不至于做无用功。但是,计算机很老实呀,她不会偷懒,也就是,A向B请求数据,B向A发送数据,A消费数据,A再向B请求数据---这个循环会狠命地进行,CPU绝对100%使用。这看起来又不爽了,WINDOWS的分时系统,时间片分得还是蛮长的,所以当从这个程序切换到另一个程序时,是有延时感的,所以这个方式看起来也不尽如人意。
    各位以为怎么样?有什么看法,特别的设计?