On Wed, 6 Aug 2008 19:41:27 +0100 "Inoussa OUEDRAOGO" <[EMAIL PROTECTED]> wrote:
> Hi, > > TAVLTree in avl_tree.pp is not thread safe due to the node > allocation and de-allocation done through the global > declared "NodeMemManager" variable. TAVLTreeNodeMemManager > implementation is cleary not thread safe, which btw IMHO > is a good thing ( for performance reason). > > Proposition : > > (a) TAVLTree should allow, at construct time, to > specify a Node memory manager which will be kept and used. > If not specified the global one will be used. > > (b) "NodeMemManager" should be declared as "ThreadVar". > > This changes does not break the API while making the > implementation thread safe. > > By the way note that the XML DOM's implementation > ( TDOMNode_WithChildren ) uses TAVLTree, so every code that uses the > fcl-xml package mainly the DOM unit, is not thread safe. If this > proposition is accepted it will be nice to have it introduced in the > soon to be release fpc 2.2.2, in the case that is still possible, > mainly for server programming. > > Attached is a patch that demonstrate the above proposition. Providing a local node mem manager does not repair xml dom. Maybe move NodeMemManager to the interface, so that a user can replace it with a threadsafe one? Mattias _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel