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

Reply via email to