Experimental Physics and
| |||||||||||||||||
|
Mathias Steiner wrote: Learned Friends, I don't know about any generally accepted way--I've seen very little communication among collaborators about database-programming methods. In my own experience, however, I've found the same thing you've found: establishing an *execution* sequence is relatively easy, and can be done in several different ways, but ensuring that data generated by the sequenced execution shows up in the right places at the right times is not as easy, and not all of the methods that ensure correct execution sequencing will also ensure correct data-delivery sequencing. The only sure way I've found to do this is to arrange that data is systematically "pushed", rather than "pulled". A put operation ensures that data arrives before the execution that needs to use the data. As you've shown, a get operation does not carry this assurance, especially when the data is from a different ioc. Certainly data can be posted in correct sequence (that's just execution ordering), but there's no guarantee that data will actually be *delivered* to an input link before the processing that requires the data occurs. In the application you describe, distributing the data with put operations is probably not what you'd really prefer to do, because doing so requires that the generator of the data know all of the recipients. You'd probably prefer that the generator only be responsible for the data. But *somebody* has know all the recipients, and whoever does must be written to by the generator and must write to the recipients, otherwise you leave open the possibility that execution will occur before the data has arrived. -- Tim Mooney ([email protected]) (630)252-5417 Beamline Controls & Data Acquisition Group Advanced Photon Source, Argonne National Lab.
| ||||||||||||||||
ANJ, 02 Sep 2010 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |