The present invention provides a technique for converting a multi-threaded
application configured to execute on a uniprocessor (UP) system to one
that executes on a multiprocessor (MP) system. Unlike previous
approaches, a novel scheduling technique is employed so that different
UP-coded user-level threads ("sthreads") can execute concurrently in the
MP system without having to rewrite their original code. To that end, the
UP-coded sthreads are organized into different concurrency groups, each
of which defines a set of one or more sthreads not permitted to execute
concurrently. By grouping the UP-coded sthreads in this manner, different
concurrency groups can be scheduled to execute their UP-coded sthreads at
substantially the same time without incorporating traditional
synchronization mechanisms into the sthreads' original UP code.