Przemyslaw Czerpak-2 wrote: > > But what happens with parent relations to moved WA and how oare child > visible in ZeroZone. Can I REQUEST each of them separately or only the > WA which was explicitly released? If the first the what happens with > relation their parent relation? Is it cleared? And what happens with > associated codeblock action? Is it shared with child WA? >
In Xbase++, the zero workspace (zone) is like an isolated RDD context without an associated application thread. Probably implemented using one of the Xbase++ internal threads for ownership of the context. Per the Xbase++ documentation, all child relation workareas are simultaneously moved into or out of the zero workspace. No operations can be performed against the workareas while in the zero workspace, so the relations cannot be altered during the move. However, you can probably request an implicitly moved child area from the zero workspace without requesting the parent. My expectation is that moves into and out of the zero workspace are processed with the exact same logic AND parent relations are released, but my experience says it is as likely that the parent relations are left dangling against the missing workarea and will result in a fault if they are activated. You request workareas from the zero workspace by alias which IMO is a weakness in the design. Rather than having alias naming collisions, the zero workspace FIFO's the workareas such that duplicate aliases are retrieved in the order they were submitted. Some general facilities included for managing the zero workspace: 1) You can attach a arbritrary codeblock to the workarea when dbRelease()ing it to the zero workspace which can be retrieved. 2) You can retrieve an array of alias names currently in the zero workspace with WorkSpaceList( DB_ZEROSPACE ). 3) You can enumerate the workareas in the zero workspace with WorkSpaceEval( CodeBlock, DB_ZEROSPACE ). DB_ZEROSPACE is a manifest constant. DB_WORKSPACE is also available for processing the current threads workarea context. The associated code block is attached to the workarea that was explicity dbRelease()d to the zero workspace. It is not shared with child workareas. AFAIK, the code block can only be set by the dbRelease() and is permanently associated until replaced via another dbRelease(). IMO, the Xbase++ zero workspace is adequate for the goal, but is minimalistically implemented and not feature rich. Rodd -- View this message in context: http://www.nabble.com/A-few-questions-about-MT-tp19555409p19695931.html Sent from the Harbour - Dev mailing list archive at Nabble.com. _______________________________________________ Harbour mailing list Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour