1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising: detecting a thread, executing in a processor, that is waiting for an event that modifies a data value associated with a target address; populating a wake-and-go storage array with the target address; storing thread state information in a hardware private array, wherein the hardware private array cannot be addressed by an operating system or work threads running on a processor; placing the thread in a sleep state; and responsive to the event that modifies a data value associated with the target address, reloading the thread state information from the hardware private array and placing the thread in a non-sleep state.