Traditionally transactions have been singlethreaded. In such an environment the thread terminating the transaction is, by definition, the thread which performed the work. Therefore, transaction termination is implicitly synchronised with the completion of the transactional work. With the increased availability of both software and hardware multi-threading, transaction services are being required to allow multiple threads to be active within a transaction. In these systems it is important to guarantee that all threads have completed when a transaction is terminated, otherwise some work may not be performed transactionally. In this paper we present a protocol for the enforcement of checked transactional behaviour within an asynchronous environment. We illustrate the use of the protocol within a proposed implementation for a CORBAcompliant Object Transaction Service intended for a soft real-time application which makes extensive use of concurrency and asynchronous message passing. Keywor...
Steve J. Caughey, Mark C. Little, Santosh K. Shriv