On 8/15/24 05:42, Ritobroto Mukherjee wrote:
So to clarify, every thread has an UNO generated ID, independent of its OS thread ID. Is this thread ID unique across a bridge or only unique in a process/environment?
yes, see <https://wiki.openoffice.org/wiki/Uno/Remote/Specifications/Uno_Remote_Protocol#Threads> (though I can't remember how LO's URP implementations compute those globally unique TIDs; one would need to look into the code)
What I can get from the code is that UNO Threads are modeled as a pair of JobQueues, one sync and one async, managed by the ThreadPool. Is this correct?
[...]
And I assume the asynchronous calls are similar but without a "done" blocking job?
Yeah, async messages complicate the picture somewhat. In olden times, UNO had a concept of [oneway] interface methods (that had to have a void return type, and don't do a response message over URP, and can be executed on top of another synchronous execution job that is currently calling out to another environment and is thus blocked waiting for a response). But today, the only remaining async operation in URP is the XInterface release operation, see <https://wiki.openoffice.org/wiki/Uno/Remote/Specifications/Uno_Remote_Protocol#The_release_Message>.
That's because the older implementation in cli_ure/ uses a Microsoft specific extension to C++ called C++/CLI, which allows seamless interop between C++ and C#. This is however not cross-platform and hence needs to be replaced with a combination of standard C++ and C# to achieve cross-platform bridging for the GSoC project.
Ah, that's useful information.