Patent ID: 7496918

Claim:
A computerized method for controlling execution in an object based environment comprising: identifying a plurality of threads having a potential demand for at least one of a plurality of shared resources; determining when multiple identified threads are waiting for at least one of the shared resources; enumerating, for each of the determined waiting threads, a lock holding entity (blocking entity) holding the shared resource sought by each of the waiting threads; computing whether an undesirable dependency exists by analyzing each of the blocking entities and corresponding waiting threads; and comparing, if the analyzing indicates that pending undesirable dependency exists, a progression indicator indicative of advancement of the threads corresponding to the undesirable dependency; wherein computing the pending undesirable dependency further comprises determining a circular dependency among a plurality of waiting threads, the circular dependency indicative of a thread waiting for a resource held by a lock holding entity and simultaneously holding a resource sought, directly or indirectly, by the same lock holding entity; wherein computing and comparing occur in a non-intrusive manner during continuous concurrent execution of the threads; and wherein enumerating further comprises: building a blocking information tuple indicative of an instance of a thread waiting for a resource; aggregating a plurality of blocking information tuples indicative of a plurality of threads and corresponding blocking entities; and wherein comparing and computing further comprises analyzing multiple sets of the blocking information tuples, the blocking information tuples derived from multiple pass scanning snapshots of the identified threads.