1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising: detecting a thread that is waiting for an event associated with a target address, wherein the event is based on a value being written to the target address that relates to an expected data value by a comparison type; populating, by a wake-and-go mechanism, a wake-and-go storage array with the target address, the expected data value, and the comparison type; placing the thread in a sleep state; responsive to an event that modifies a data value associated with the target address, determining whether to wake the thread; and in response to a determination that the thread is to be awoken, placing the thread in a non-sleep state.