RPC's can be abstracted so that you don't know. E.g Microsoft COM: same call to call an in-process COM object versus DCOM. Within the process, it could be "apartment threaded": the other domain has its own thread, which receives the argument material as a request, does it, and replies. (Kind of thing). Or it could be direct: your thread calls the function.