next up previous contents
Next: An Example Language Implementation Up: Design of Converse Previous: Dynamic load balancing   Contents


Utilities

Multilingual interoperability is productive only when languages and paradigms can be quickly implemented to utilize components written using those paradigms. In order to make it convenient to implement new languages, several convenience modules are provided with Converse. These represent the commonly needed abstractions to simplify the task of implementing runtime systems for parallel languages.

The message manager is a table object for storing messages according to a set of integer tags. It supports variable numbers of tags, and wild cards in the lookup process. It can also be used to store any data that must be indexed by integer tags. The futures library implements the futures abstraction [30] in a library-form. It provides a future ``object'', with methods to fill the object remotely, get its value, and block until the value has been filled. The Converse Parameter Marshalling system is a small C preprocessor and code generator that produces remote function-invocation code. One inserts the keyword CpmInvokable into a C source file in front of a function definition. The CPM preprocessor scans the C file, and generates code to invoke that function remotely. The CPM-generated code automatically packs up the arguments into a message, sends them to the destination, and invokes the specified function. The POSIX threads API has been implemented on top of Converse threads. These POSIX threads can interoperate with Converse threads, and the rest of the Converse system.


next up previous contents
Next: An Example Language Implementation Up: Design of Converse Previous: Dynamic load balancing   Contents
Milind Bhandarkar 2002-06-12