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 that modifies a data value associated with a target address; storing the target address in a wake-and-go entry of a wake-and-go storage array in association with a thread identifier of the thread, wherein the wake-and-go storage array, is a content addressable memory and an address on a bus is used to address the content addressable memory; storing thread state information for the thread in a thread state storage; 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 thread state storage for the thread corresponding to the thread identifier in the wake-and-go entry, and placing the thread in a non-sleep state, wherein responsive to the event that modifies a data value associated with the target address, the content addressable memory generates an exception.