1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising: detecting, by a wake-and-go engine within a multiple processor system, a thread that is waiting for an event associated with a target address, wherein the thread executes on a first processor in the multiple processor system; recording, by the wake-and-go engine, an entry in a central repository wake-and-go storage array including the target address, a thread identifier associated with the thread, a central processing unit identifier associated with the first processor, an address of thread state information associated with the thread, an expected data value, and a comparison type; responsive to detecting that the thread is waiting for the event, placing the thread in a sleep state; snooping, by the wake-and-go engine, transactions on a bus; responsive to the wake-and-go engine detecting a transaction on the bus that modifies a data value associated with the target address, determining, by the wake-and-go engine, whether to wake the thread, wherein determining whether to wake the thread comprises performing a comparison based on the data value at the target address, the expected data value, and the comparison type and determining to wake the thread responsive to determining the transaction modifies the data value at the target address with a value that satisfies the comparison type; responsive to a determination to wake the thread, using the central processing unit identifier to identify the processor on which to wake the thread and placing, by the wake-and-go engine, the thread in a run queue for the identified processor; loading thread state information using the address of thread state information; and initiating execution of the thread using the thread state information.