Skip to Main Content
Describes a generic mechanism to migrate threads in heterogeneous distributed environments. To maintain high portability and flexibility, thread migration is implemented at the language level. At compile-time, a pre-processor scans the C and C++ programs to build the thread state, detects possible thread migration points and transforms the source code accordingly. Run-time support helps to migrate the threads physically. Since the physical thread state is transformed into a logical form, and pointers and dynamically-allocated memory in a heap are supported, the proposed solution places no restriction on thread types and migration-enabled systems. We implemented this approach in Strings, a multithreaded-software distributed shared memory system. Some microbenchmarks and performance measurements on the SPLASH-2 suite are reported.