Hi. Thank you very much!
My design is based around the concept of a sort of 'client-server' approach. In my little version of Pipelines; the StageManager provides th e central 'server' system that services input and output requests from the various stages. The StageManager does not 'know' about stages and it does not coordinate them; it simply (obviously with other support stuff) reads and writes records when it is asked to. Each stage is responsible for parsing its argument, allocating any data structures that it may need during its runtime phase .. and then at dispatch time .. its a free-for-all. But because the ReadRecord(), PeekRecord() etc functions all call into the StageManager; it simply lock s and releases stages as and when they call the appropriate function. There is no commit level stuff .. or anything like that .. and there is n o 'central brain' which coordinates what can run and when.. it runs by the way the stages interconnect. Again .. thanks for the support! Regards. James Laing.