Patent ID: 8458723
Filing Date: 2013-06-04
Classification: G06F

Abstract:
1. A method of executing computer instructions, comprising: a) receiving, by a first computer system, a first instruction to perform a first task, wherein the performance of the first task is a first performance, b) receiving, by the first computer system, a second instruction to perform a second task, wherein the performance of the second task is a second performance, c) executing, by the first computer system, each thread of the first plurality of threads of the first process to a first time stop point when the first plurality of threads requires data from the second computer system to continue its execution, i) wherein, during the execution, the first computer system maintains a first data structure that is configured to store each thread of the first plurality of threads of the first process in accordance with at least the following rules: ii) wherein, whenever each thread of the first plurality of threads requires data from the second computer system to continue its execution, each thread gives up its execution in favor of an execution of another thread from the first plurality of threads; d) executing, by the first computer system, each thread of the second plurality of threads of the second process to a second time stop point when each thread of the second plurality of threads requires data from the third computer system to continue its execution, i) wherein during the execution, the second computer system maintains a second data structure that is configured to store each thread of the second plurality of threads of the second process in accordance with at least the following rules: ii) wherein, whenever each thread from the second plurality of threads requires data from the third computer system to continue its execution, each thread gives up its execution in favor of an execution of another thread from the second plurality of threads; e) requesting, by the first computer system, from the second computer system, the data needed to continue the execution of each thread of the first plurality of threads of the first process; f) requesting, by the first computer system, from the third computer system, the data needed to continue the execution of each thread of the second plurality of threads of the second process; g) receiving, by the first computer system, from the second computer system, the data needed to continue the execution of each thread of the first plurality of threads of the first process; h) receiving, by the first computer system, from the third computer system, the data needed to continue the execution of each thread of the second plurality of threads of the second process; i) resuming, by the first computer system, the execution of each thread of the first plurality of threads of the first process based on the state information for each thread of the first plurality of threads which has been stored in the first data structure at the first time stop point; and j) resuming, by the first computer system, the execution of each thread of the second plurality of threads of the second process based on the state information for each thread of the second plurality of threads which has been stored in the second data structure at the second time stop point.