As you might assume, the operating system uses transactional execution. A caveat: you cannot use it unconditionally. Even if you know you are on the right machine. One reason for that is that it cannot be used if z/OS is running on/under VM. Another is that we have given the customer a knob to ask that transactional execution not be used when they are migrating to a new machine and really want, first, to make sure that the machine works before worrying about whether new code paths in the software also work. This is the MACHMIG statement of the LOADxx parmlib member. You must pay attention to the PSA/CVT bit (you can choose which you want to look at) which is on when available.
Transactional execution is used, for example, within supervisor, IOS, RSM. It is what makes "contractible CPOOL" possible and available. We tend to look for cases where we can use TBEGINC rather than TBEGIN. That is because any use of TBEGIN requires accepting the possibility of too many aborts, and providing "traditional serialization" in the fallback path. And this means that the user of a transaction must also serialize against the user of "traditional serialization". "Traditional serialization" could be the local lock, an ENQ, a latch, etc. One of the use cases is to avoid coarse-grained serialization when fine-grained serialization will do. The LOCAL lock is a case of coarse-grained serialization. It serializes lots of stuff. But sometimes you might be using it to serialize only "your stuff". Yet you are still contending for the resource with other users of the LOCAL lock, so could be adversely impacted by those cases (and your usage could adversely impact others). If you can use TBEGIN(C), you no longer need to contend with other users of the LOCAL lock. This is a performance-related facility. Performance needs should dictate how much you choose to use it. Peter Relson z/OS Core Technology Design ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
