A computing system including a processor and a memory, the memory storing a shared non-circular memory array and instructions which, when executed by the processor, cause the computing system to:
- assign an index number to each memory slot of a plurality of sequential memory slots of a shared non-circular memory array;
- allocate a first memory slot and writing data to the first memory slot, wherein the first memory slot is associated with a producer index number;
- read data from a second memory slot, wherein the second memory slot is associated with a consumer index number;
- and
- de-allocate data from a third memory slot having a second index number, wherein the third memory slot is associated with a garbage collector index number;
- wherein the writing, reading and de-allocating are performed using atomic instructions.