20210214zadapter的本质 - ziyouzy/2021blog GitHub Wiki
或者说是,数据流动节点的本质是:
1.借助管道可以将数据管道化,也就是突破线程屏障
2.zadapter将1个或n个原始的Raw管道化数据转化为1个或n个信号(date-in-chan转化为signal)
3.如1个或n个信号生成,则必然伴随0个或n-1个新New管道化数据的生成,也就是说,转化的结果可以没有新New管道,但是不能没有signal
4.共享内存(创建缓存单元临时储存数据)是创建新New管道所必须的手段,新生成多少个New管道,就会存在多少个缓存单元与其对应
5.一个zadapter的Run函数只会存在一个go func()for{...}()结构
6.如果创建新缓存单元的过程复杂,则需设计独立的功能方法或函数,函数会放回这个缓存单元对象的实体,而调用这个函数则必须在主体的go func()for{...}()中进行
7.如果有两个或两个以上Raw管道数据需要设计独立的数据聚合函数,这个数据聚合函数在实战中往往就是上面所说的如新缓存单元的过程复杂,则需设计独立的功能方法或函数
总之,1-6就足够说明zadapter的本质了
当需要处理多个Raw的数据聚合时会用到某种类型的“数据聚合单元”,他依然会以一个结构类的形式存在
但是到时会嵌入在adapter{}的结构类里还是嵌入在adapter.Config{}结构类里暂时还不得而知,不过由于必备的RawinChan和NewoutChan都存在于adapter.Config{}结构类中,他也八成会存在于adapter.Config{}结构类中
遇到了实际情况再去感受吧