本文主要是介绍Fabric solo源码分析1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Fabric solo算法
该算法较为简单,主要的处理逻辑在solo.main方法上。
func (ch *chain) Halt()
solo支持多通道停止算法,当有多个通道要停止算法,各个通道都会发送exitChan,solo会在接收到所有的exitChan才会close该exiChan让solo停止。
但是多个通道怎么体现,怎么进行的,待分析。<未完成>
//这里为什么用select,case和default的作用,干嘛呢
//exitChan是用于内部主动退出的,外部调用halt,可接收该exitChain接收退出状态,多次调用会进行close,多次close没问题
//order通过exitChan告知solo要退出,Halt主要是用于外部干涉,停止solo,若order发出exitChan,先被halt接收了,这其实
//是
//调用halt,实现外部退出,由于没有exitChan,所以一般会进入default close(exitChan)实现完全的结束
func (ch *chain) Halt() {log.Println("in halt ")select {case <-ch.exitChan: //这里为什么用个select,有case就不走default吗?log.Println("exitChain signal")// Allow multiple halts without panic// 连续多次close不会panic啊// -->接收到多个exitChan,在收到所有channel的exit后,才会进行关闭default:log.Println("close exitChain signal")close(ch.exitChan) //关闭通道,}
}
多通道待分析
这篇关于Fabric solo源码分析1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!