RPC is either the saviour or the devil of distributed
systems, depending on your perspective. It was certainly
the tool of the 1980s.
If the RPC returns information that is <#3049#> not<#3049#> needed
immediately, there are two ways to get performance
comparable to asynchronous communication:
-
Restructure the program (values are returned by
separate RPCs)
-
Futures
Futures allow RPC to be used intuitively <#3052#><#3052#> the RPC to
succeed immediately w/o violating the semantics of the
program. Futures are very efficient w/ tag memory support.
However, futures can also be transparently supported through
classes (C++ or otherwise) on systems w/o hardware support.