>Well, the performance isn't good but this looks like a use case for PLO.

How is PLO a use case for a multi-tasking circular queue? Or maybe it's 
actually a free storage pool. Either way, how do you force the random activity 
into sequential activity? How do you eliminate timing issues, deadly embraces 
and spin lock hangs?

Let's make this simple by ignoring the circular wrapping and all the other 
stuff mentioned. Pauls request boils down to:
startindx dc h'0'
endindx dc h'0'
queue dc 200CL256' '

If this is a queue as mentioned, how does the receiving task wait for index=10 
because it's taking longer than index=11? Remember that queueing requires prep 
work for the queue data.
 
If it's a free storage pool, do you have 30 tasks in a spin loop waiting to 
terminate because the first task is still running? Or do you have ECB's? Or 
maybe you have a table of the entries that have been freed creating more timing 
issues.

The only time a circular queue works is when you have 1 sender and 1 receiver. 
In this case, CS and PLO are not needed. The sender modifies one index and 
receiver modifies the other index. No timing issue.

Unless I left out a scenario, using a circular queue will be far more 
complicated than a chained queue.

Jon.

Reply via email to