A method for executing an atomic compare exchange operation, the method comprising: receiving (410, 430), from a processing core, a compare command, the compare command configured for (a) comparing an expected value to a stored value, the stored value stored in a memory location, and (b) outputting a comparison result that indicates whether the stored value equals the expected value, wherein the compare command is associated with a conditional exchange command, wherein the compare command and the conditional exchange command are associated with a same thread; determining, by a first controller, whether an execution of the compare command causes a hardware failure; wherein the hardware failure is a full buffer failure of a buffer allocated to store compare commands; when determining that the execution of the compare command does not cause the hardware failure then executing the compare command and the conditional exchange command in an atomic manner; when determining that the execution of the compare result causes the hardware failure then (a) generating a comparison result that indicates that the stored value differs from the expected value; and (b) executing the conditional exchange command based on an assumption that the stored value differs from the expected value, wherein the executing of the conditional exchange command comprises outputting the stored value, wherein the stored value reflects a content of the memory location before the execution of the conditional exchange command; receiving, by the processing core, the stored value; and evaluating, by the processing core, whether the hardware failure occurred based on a comparison between the stored value and the expected value. receiving (410, 430), from a processing core, a compare command, the compare command configured for (a) comparing an expected value to a stored value, the stored value stored in a memory location, and (b) outputting a comparison result that indicates whether the stored value equals the expected value, wherein the compare command is associated with a conditional exchange command, wherein the compare command and the conditional exchange command are associated with a same thread; determining, by a first controller, whether an execution of the compare command causes a hardware failure; wherein the hardware failure is a full buffer failure of a buffer allocated to store compare commands; when determining that the execution of the compare command does not cause the hardware failure then executing the compare command and the conditional exchange command in an atomic manner; when determining that the execution of the compare result causes the hardware failure then (a) generating a comparison result that indicates that the stored value differs from the expected value; and (b) executing the conditional exchange command based on an assumption that the stored value differs from the expected value, wherein the executing of the conditional exchange command comprises outputting the stored value, wherein the stored value reflects a content of the memory location before the execution of the conditional exchange command; receiving, by the processing core, the stored value; and evaluating, by the processing core, whether the hardware failure occurred based on a comparison between the stored value and the expected value.