Patent ID: 8601487

Claim:
A method for deterministic locking in a parallel computing environment, the method comprising: creating a data structure in memory of a computer for a shared resource, the data structure comprising a reference to an owner of a lock for the shared resource and a queue of threads able to seek exclusive access to the shared resource, the queue comprising a plurality of entries, each entry comprising an identifier for a corresponding one of the threads and a deterministic time computed for the corresponding one of the threads from a count of memory accesses occurring in the corresponding one of the threads; deterministically selecting a thread from the queue to receive ownership of the lock and exclusive access to the shared resource based upon a deterministic time for the selected thread as compared to other deterministic times for others of the threads in the queue; and permitting each of a grouping of the threads for a corresponding task to compute at least a portion of a problem in parallel and to write results from computing the portion of the problem into the shared resource using the deterministic lock managed by a deterministic lock management module, and enabling an individual one of the threads in the grouping of the threads with a lowest computed deterministic time acquiring an exclusive lock to the shared resource to autonomously terminate operation of remaining ones of the threads in the grouping of the threads by signaling the remaining ones of the threads in the grouping of the threads to abort processing while obtaining the deterministic lock on the shared resource, the remaining ones of the threads being unable to acquire an exclusive lock to the shared resource subsequent to the thread with the lowest computed deterministic time acquiring the exclusive lock to the shared resource, the shared resource being unable to write additional results by the remaining ones of the threads subsequent to the thread with the lowest computed deterministic time acquiring the exclusive lock to the shared resource, whereby the shared resource is deterministic when the thread with the lowest computed deterministic time acquires the exclusive lock to the shared resource.