If your application is not designed to use PLO for serialization, it'll 
definitely not work for you. I use PLO for serialization because of issues with 
locks that you are describing (system affects) and many others. All my code can 
run as SRBs but unlike what you describe I almost never acquire locks. I always 
use PLO except when interfacing with MVS services that require locks which I do 
rarely.  Besides you can't mix CS with PLO meaning you would have to convert 
every CS affecting that chain. Sounds to me like you're stuck with the CMS 
lock. And if it’s a process done frequently, it will have a system impact; a 
significantly greater impact than a PLO serialized one. 

The thing I don't understand is you're statement "My problem is that a process 
comes in and removes the control block chain while another process is suspended 
and attempting to update the chain. When the updating process wakes up S0C4!" 
If you mean that you're releasing the storage for the chain, the process doing 
the release could use a PLO to set the chain pointers to 0 and in that process 
update the swap word. The second process will then get a CC forcing re-drive 
and it'll discover the chain is  now 0. In that case, that would probably mean 
that you would need to use PLO Compare and loads for every reference to those 
chain pointers or (my preference) you would have a retry point detect the 0c4 
and realize the chain has been released and just continue . I really don't see 
the big deal with an 0c4 in this scenario (should happen rarely). The PLO 
process does not update anything until the PLO executes so no harm no foul. 
Again, if the application is not designed to use PLO, it won't work. 

And you're not slow. When I first started using PLO almost 10 years ago. I 
spent days writing test cases with special traces so I could see what was 
happening. The whole time I had the POM open to the PLO instruction reading it 
over and over. Now, I consistently code PLO without much thought. If you chose 
to spend time learning the PLO, I think you'll find it vastly superior to locks 
(no restrictions) and applicable to 99%+ of all serialization scenarios you 
encounter provided you design the application to use PLO from the start.

Kenneth 

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf 
Of Donald Likens
Sent: Thursday, November 07, 2013 8:33 AM
To: [email protected]
Subject: Re: Serialization without Enque

It has taken me this long to mostly understand PLO... I must be slow.

Now that I understand it (mostly) I am pretty sure it will not work for me. My 
problem is that a process comes in and removes the control block chain while 
another process is suspended and attempting to update the chain. When the 
updating process wakes up S0C4! That is why I was looking at using locks. If 
the process updating the chain holds a lock and the process removing the chain 
needs that lock to update the pointers this would not happen. So back to my 
original question:

My code must be able to run in SRB mode and with locks held. I have a situation 
where I need to serialize processing and cannot use CDS because the two 
addresses being updated cannot be next to each other (because I use CDS with 
these two addresses with other addresses). I have attempted to use a 
combination of CS instructions to resolve this problem but it does not work. I 
know this will work if I use a CMS lock but I am concerned about affecting the 
whole system. Any advice?       

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
[email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to