1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising: detecting, by a hardware wake-and-go mechanism within a processor, a thread that is waiting for an event that modifies a data value associated with a target address; populating, by the hardware wake-and-go mechanism, a wake-and-go storage array with the target address; placing the thread in a sleep state; responsive to the event that modifies the 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.