FSVO "new" <g>CharlesSent from a mobile; please excuse the brevity.
-------- Original message --------From: Paul Gilmartin 
<[email protected]> Date: 7/30/19  12:39 PM  
(GMT-05:00) To: [email protected] Subject: Re: Circular Queue 
Handling in Assembler On 2019-07-30, at 10:19:34, Gary Weinhold wrote:> > After 
loading the new index value, check if it's 256.  If so, do a> compare and swap 
for 255 to 0; if another process beat you to it, CS> fails and you have to 
reload the index value you now want (like 0 to 1),> just like you would if 
compare and swap fails.  The check for new index> = 255 has to be done in every 
loop.> > Or, it more be more efficient to do as was suggested in another 
answer:> after loading the new index value, aNd the register with '000000FF'.> 
> This may not be sufficient to protect the data being maintained in the> 
circular queue.  If my instance acquires index 42, for example, with the> above 
CS logic, there may be nothing to ensure that my instance actually> get the CPU 
cycles to move data to the associated 64-bit address before> the index is 
cycled by higher priority processes and some other instance> acquires index 
42.>  +1... if the producer does the CS first, there's no hazard two 
instances'acquiring "42"; rather the hazard is that a consumer will fetch the 
databefore the producer finishes moving it in.Surely, the problem of managing a 
FIFO queue, whether with a circularbuffer or otherwise, has been posed and 
solved numerous times.  Theremust be a published solution available.Are there 
new z Series instructions to facilitate this?  Perhaps PLO?-- gil

Reply via email to