恭喜,你发布的帖子
发布于 2023-07-19 21:59:27
10楼
栈是LIFO(后进先出),夹具FIFO(先进先出),我有点拎不清了。
格局小了兄弟,先入先出,后入先出都是栈,参考:先进先出栈_百度百科 (baidu.com)
不过这并非重点,重点在于一个思想:分布式功能块——同一个小功能块组成一个大功能块,打到协同多个对象的连锁关系的目的,由于可以自由的增加小功能块的数量,所以被控对象的数量可以简单、无限的拓展。
排队块只是一个例子:
它是分布式的,虽然只能提供一个栈位,但是它能输出当前栈位,于是N个功能块提供N个栈位。
要知道不管是LIFO(后进先出),还是FIFO(先进先出),一般来说只能在出栈请求后知道出栈的是谁,而无法实时知道某个对象处于那个栈位,排队块完全可以实时知道自己处于那个栈位以及入栈的总数。
当需要出栈时,对于FIFO(先进先出),则出栈的应该是栈位=1的对象,对于LIFO(后进先出),出栈的便是栈位=总数的对象,当对象出栈后,栈位并不会一直空缺,未出栈的对象会自动移位填补空缺,但不会让栈位的前后关系弄乱。
由于是实时知道自己的栈位,栈的方式并不仅仅是LIFO或FIFO,所以在必要时,比如某个对象故障时,你甚至可以让指定栈位的对象出栈,比如你直接让中间的栈位为2的对象出栈,出栈后,并不会捣乱原本的栈位,但对于LIFO与FIFO,如果在对象入栈后出现故障,你根本无法单独将这个对象抽离。
不仅仅提供灵活性,这种编程方式还有它的扩展性与分布式特点。
不管是LIFO还是FIFO,他们提供的栈位总是有限的,因为他是有一个功能块组成,内部防止一个数组存放他的栈位,但是总有上线,分布式编程思路是一个功能块提供一个栈位,你需要多少个栈位,增加这个块的实例即可,如果你的CPU允许,你甚至可以增加到十万个、百万个栈位,他没有上限,因为一个实例提供一个栈位,N个实例提供N个栈位,这是分布式的一种体现。
你可以这样理解,我将LIFO撕裂为N块一样的功能块得到了排队块,多个排队块实例通过一个数组连接起来,也能够变成LIFO,但不同的是,这个LIFO能够容纳的对象数量是可以是无限的,它能够变为一个超级LIFO或者FIFO,且无入栈数量限制,它能够容纳多少个对象,取决于你调用多少个排队块的实例。
总之,我主要是想通过排队块这个例子,来说明这种编程思路的灵活性、扩展性与分布式特点。
请填写推广理由:
分享
只看
楼主