Remote Procedure Call - Latent Potential?

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:
  1. Restructure the program (values are returned by separate RPCs)
  2. 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.