1. A method for executing software utilizing shared memory space, comprising: executing a call to a first asynchronous method comprising a first instruction and a second instruction, wherein the first asynchronous method accesses a shared memory space which may be used by at least one other asynchronous method executing in parallel to the first asynchronous method; determining that the first instruction is not permitted to be executed in the first asynchronous method, and, in response, placing the first instruction in a queue; determining that the second instruction is permitted to be executed in the first asynchronous method, and, in response, executing the second instruction; determining whether the shared memory space has been altered by the at least one other asynchronous method executing in parallel to the first asynchronous method since the first asynchronous method started executing; if the shared memory space has not been altered by at least one other asynchronous method since the first asynchronous method started executing, then committing any changes made to the shared memory space by the first asynchronous method; and responsive to committing any changes made to the shared memory space by the first asynchronous method, executing the first instruction from the queue.