D
dbeavon
Guest
Does anyone have suggestions about how I might synchronize multiple ABL sessions that are running within a single PASOE process? This is needed because of the way that the CLR bridge allows multiple ABL sessions to interact with the *same* internal CLR appdomain. In some cases the CLR classes that are being used might not be safe for multi-threading, therefore requiring synchronization of some kind (ie. via critical sections or mutexes). One possible idea I was playing with was the use of a remote client/server database record. See: community.progress.com/.../56505 However, when multiple ABL sessions are interacting with a remote record, and they conflict with each other, then it seems to waste a whole second of time (or multiples of 1 second depending on the number of sessions that are being serialized). This is far too much time. I was hoping for delays of only a few milliseconds. Just to elaborate, the real problem I have while interacting with a single CLR appdomain is not the classes in .Net themselves (their static members are generally thread-safe). It is the Progress CLR bridge that can be unsafe for multi-threading. While initializing the bridge (for each ABL session in _mproapsv) there seems to be a small chance that the "initialization" operation will fail, depending on whether other ABL sessions are attempting to initialize themselves at the same time. Any ideas would be greatly appreciated. I am hoping for a solution that operates entirely within the memory of a single MS-agent process. Unfortunately I don't thing ABL has any API for doing thread synchronization (or at least nothing that I can find). Perhaps I could even interact with a local file on disk, since that should not be as slow as locking a remote client/server database record.
Continue reading...
Continue reading...