Patent ID: 9600325
Date: 2017-03-21
CPC Classifications: G06F

Claim:
1. A non-blocking method performed on a computer that includes at least one processor and memory, the non-blocking method for initializing data, the non-blocking method comprising: creating, by the computer prior to an attempt by a first-in-time thread to initialize the data, an initialization primitive that is configured for indicating each of three states of the data, the three states comprising: uninitialized, initializing, and initialized; allowing, in response to the attempt to initialize the data and to the initialization primitive indicating that the data is in the uninitialized state, continued execution of the first-in-time thread that is one of a plurality of threads all being concurrently executed by the at least one processor, where the data is shared among the plurality of threads; and transitioning, based on the allowing, the initialization primitive to indicate that the data is in the initializing state, where the non-blocking method does not enforce mutual exclusion during the initializing state among any other threads of the plurality of threads that are not the first-in-time thread and that also attempt to initialize the data, and where the any other threads are returned an indication that they did not perform the first successful initialization of the data.