A method for inducing multi-threading in software code may use blocks of
code as the basis for scheduling and to suggest concurrent execution for
each block. The method may comprise marking one or more blocks of code in
an application coded for sequential execution to generate marked code.
The marking may comprise inserting a marker at each of the one or more
blocks to suggest that block for potential concurrent execution.
Concurrent code may be generated from the marked code. Generating the
concurrent code may comprise analyzing the marked code to estimate
performance benefits of concurrently executing the marked blocks of code
and determine which marked blocks would meet a performance benefit
threshold if executed concurrently. Generating the concurrent code may
also comprise transforming one or more of the marked blocks into
corresponding concurrently executable tasks. The method may include
scheduling one or more of the concurrently executable tasks.