D
dbeavon
Guest
@frank.meulblok - That is a much better explanation than the tech-babble on the Progress KB. Here is the key - if you *share* a parser across multiple threads, then they will have to take turns. But when each thread has its *own* instance of the parser then the "the instances can be used concurrently, without external synchronization". I would guess that PASOE, being multi-threaded, is not using that third-party library correctly. (It is used in a way that is valid when the AVM is only hosting ABL code in a single-threaded way.) It sounds like the Xerces library is perfectly capable of being used in "isolation" on multiple threads. But from an OpenEdge point of view, that was never a requirement, nor a consideration, until PASOE came along. Remember that the other runtime host processes (_proapsv, _progres, etc) were all single-threaded, and PASOE is the first example one that is multi-threaded. There are other technical issues with third-party software that arise based on the fact that PASOE hosts multiple threads. Another example that comes to mind is the fact that "STATIC" members in ABL are different from one thread (ABL session) to the next. But when you use the .Net CLR bridge to access the "static" members in .Net, those will all reference the *same* underlying members within the *same* appdomain. You have to be careful about understanding the difference in what "static" means in the context of each of these runtimes. Fortunately most static members of .Net are thread-safe ... but that doesn't mean there won't be some concurrency control that requires threads to be temporarily blocked. (The blocking will may appear like .Net is just running slow, until there is some closer examination.) The question about the isolation of ABL sessions brings a question to mind. Does each ABL session represent a separate "AVM"? Ie does PASOE host multiple "AVM's" or a single "AVM" with multiple sessions? Does the term AVM even get used in the context of PASOE? The docs use it in the context of the single-threaded hosts but not for PASOE: documentation.progress.com/.../index.html
Continue reading...
Continue reading...