Chant [29] is a parallel programming environment which extends the POSIX thread standards for lightweight thread packages. It does this by adding a new object called Chanter thread which supports the functionality for both point-to-point and remote service request communication paradigms. It uses polling-based point-to-point communication to avoid interrupts and allows for messages to be delivered directly to threads without an intermediate message buffer copy. The remote service request mechanism allows threads to register handles similar to Converse, and are executed by the respective thread when it invokes the scheduler in polled mode. Chant relies on two supporting libraries--an interprocess communication library and a lightweight threads library.
In Chant, both the sending and the receiving processor are aware of the message to be sent/received in advance. This feature is used to register the receive operation with the operating system(OS) so that the OS can copy the message directly to the proper memory location rather than perform an intermediate buffer copying operation. Pre-registration of message receives can be implemented by a programming language implementer using message-managers of Converse.
Chant threads are globally named. It identifies a thread using the combination of process group id, process rank within the group, thread rank within process. Threads within a process communicate using shared memory primitives whereas those in different processes use message passing. Chant threads are implemented over kernel-level threads, whereas Converse threads are user-level non-preemptive threads. There is no support for direct thread-to-thread communication in Converse. Rather, a more generic message-delivery mechanism is provided, which could be used to deliver messages to threads. The naming scheme for threads in Converse is local to a process. But the global naming scheme can be easily implemented on top of the generic mechanisms provided by Converse.