我使用堆栈先入先出的功能对一批设备进行排队处理,先发送请求的先进性处理,后发送请求的后处理,但是工作中不可能没有意外,如果突然有一台设备中途退出,不再请求该如何处理?
刚开始的想法是这样:既然堆栈对数据表或是数组的操作,那么我就从这方面着手,当一个请求取消的下降沿,通过查表指令找出这个设备在表中排列的位置,然后用后面的数据覆盖掉这个数据,即后面的表元素全部加1,尝试了一下很是麻烦,先要查到元素的位置,然后使用循环进行移动,还要将堆栈的位置变化加1,我有二十台设备,就要做二十断这样的程序,实在是太麻烦。
后来又想出了另外的办法,从出栈出发想办法,将无效的请求给忽略掉,当一套设备放弃请求时,出栈的数值直接忽略掉,再进行一次出栈,这样程序就简单太多了。