Учитывая сказанное
тут и
тут можно записать код для пула очередей в SmallBasic примерно следующим образом (минуя для кратости всевозможные проверки):
dim QUEUES
dim TAIL
dim nil
func QEmpty(qname)
if QUEUES(qname)(0)=LEN(QUEUES(qname)(1)) then
QEmpty=true
else
QEmpty=false
end func
sub CreateQueue(qname,tail)
APPEND QUEUES(qname),0
APPEND QUEUES(qname),nil
TAIL(qname)=tail
end sub
func QInsert(qname,value)
APPEND QUEUES(qname)(1),value
QInsert=true
end func
func QRemove(qname)
if QEmpty(qname) then exit
QRemove=QUEUES(qname)(1)(QUEUES(qname)(0))
QUEUES(qname)(0)=QUEUES(qname)(0)+1
if QUEUES(qname)(0)>TAIL(qname) then
DELETE QUEUES(qname)(1),0,TAIL(qname)
QUEUES(qname)(0)=0
end if
end func